我正在使用三角测量程序,我需要绘制数据点及其三角测量(从另一个程序获得)。所以我的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行来引入空白行。有什么帮助吗?
答案 0 :(得分: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
初始化为适当的大小。请注意,newgrid1__EDT
每两行有3行。