1

我正在使用三角测量程序,我需要绘制数据点及其三角测量(从另一个程序获得)。所以我有我的 delauany 边缘矩阵newgrid1_eDT(e 表示边缘列表)作为(第一列是行号):

1         0 0   9
2         0 1   9
3         0 1   9
4         0 1   8
5         0 1   8
         [...]
11716     5 6   8
11717     1 2   4
11718     0 2   4

我们的想法是让它像这样 newgrid1_ASCIIeDT:

1         0 0   9
2         0 1   9
3
4         0 1   9
5         0 1   8
6
7         0 1   8
         [...]
11715     5 6   8
11716
11717     1 2   4
11718     0 2   4

基本上,每 2 行代表一个 3d 坐标对(每对点代表一条线)。

我编写了以下内容,试图从newgrid1_eDT连续复制两行(索引 i),然后将空行复制到newgrid1_ASCIIeDT索引j),从而循环遍历 empy 矩阵newgrid1_ASCIIeDT逐渐填充它。我在接收矩阵newgrid1 _ASCIIeDT中分配了 11718+ 11718/3 =15624 行;我们从newgrid1__eDT 转移的每个点一个,每 2 行后加上一个空的 mrow(在第 3、6、9 行,...,依此类推):

newgrid1__ASCIIeDT=zeros(15624,3);
[m,l]=size(newgrid1__ASCIIeDT) ;
j=0;
i=1;
for  j = 1:3:15624
i   
newgrid1__ASCIIeDT(j,:)=newgrid1__eDT(i,:);
newgrid1__ASCIIeDT(j+1,:)=newgrid1__eDT(i+1,:);
newgrid1__ASCIIeDT(j+2,:)=blank;
i=i+1
end

出于某种原因,我相信这应该可以解决问题,但不知何故我得到了奇怪的结果。还有其他(更简单的方法)可以做到这一点,还是我在重新发明轮子?

理想情况下,我会用 C 语言编写这个(所有其他事情都在发生),但我现在只需要一个快速修复,并且不能通过 11k 行来引入空白行。请问有什么帮助吗?

4

1 回答 1

0

简单的答案是把i = i+2;

但实际上,我认为你应该这样做

newgrid1__ASCIIeDT(1:3:end,:)=newgrid1__eDT(1:2:end,:);
newgrid1__ASCIIeDT(2:3:end,:)=newgrid1__eDT(2:2:end,:);

为此,newgrid1__ASCIIeDT必须将其初始化为适当的大小。请注意,每两行 3 行newgrid1__EDT

于 2012-12-05T00:31:29.767 回答