2012-12-04 86 views
1

我正在使用三角測量程序,我需要繪製數據點及其三角測量(從另一個程序獲取)。所以,我有我的delauany邊緣矩陣newgrid1_eDT(E爲邊列表)爲(第一列是行號):用合適的空行將矩陣格式化爲txt文件

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行;一個是我們每2行之後,從newgrid1__eDT加一個空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

答案很簡單,就是把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行。

+0

我已經嘗試了您的建議,但不知何故得到以下錯誤'下標分配維度不匹配。'我嘗試初始化** newgrid1__ASCIIeDT **作爲一個空矩陣(我知道這不是最佳),但它仍然不起作用。 – user1873500

+0

然後newgrid1_ASCIIeDT的大小不正確。實際上,它應該是11718 + 11718/2,因爲你要爲原始數據中的每兩個元素添加一行。 – dustincarr