作者ReiFu21 (ReiFu)
看板MATLAB
標題[討論] 讓兩個矩陣的列數交錯
時間Sun Dec 2 10:30:21 2012
我有兩個矩陣 A的大小是2000000x6 B的大小是1999999x6
我想讓這兩個矩陣的列數交錯 產生一個新的矩陣是3999999x6
開頭一樣是A的第一列 結尾一樣是A的最後一列 但是把B給塞進去了
像這樣
A1
B1
A2
B2
.
.
.
.
Bend
Aend
我寫了迴圈慢慢做 A1B1
A1B1A2B2
A1B1A2B2A3B3
.
.
.
.
一開始程式跑很快 估計幾十分鐘就可以跑完
但是越跑越慢 我用計時程式發現間隔時間呈等加級數增加
最後估計需要好幾天的時間才可以跑完
請問是哪裡出了問題? 還想請問有比較快速的寫法嗎??
謝謝
附上原始程式
ee=length(A);
tic
C=[];
TimeSpend=[0];
for j = 2:ee-1
C=[C;A(j-1,:);B(j-1,:)];
TimeInterval=toc-TimeSpend
TimeSpend=toc
end
C=[C;A(end-1,:);B(end,:);A(end,:)];
save 'C.txt' C -ascii
還有最後出來的新矩陣C其實就是A所有兩兩列數中間插入'上下兩列的中間值'
ex:A= 1 3 5 B= 2 2 5 C= 1 3 5
3 1 5 2 1 3 2 2 5
1 1 1 3 1 5
2 1 3
1 1 1
我在算B矩陣時也是時間間隔會越來愈長 估計完成也要花1天的時間
想請問有沒有比較快的方法
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.125.30.111
1F:推 Oxygenair:C = zeros(size(A,1)+size(B,1),size(A,2)); 12/02 11:00
2F:→ Oxygenair:C( 1:2:size(C,2) , : ) = A; 12/02 11:00
3F:→ Oxygenair:C( 2:2:size(C,1)-1 , : ) = B; 12/02 11:01
4F:→ Oxygenair:第二行請更正 C( 1:2:size(C,1) , : ) = A; 12/02 11:02
5F:→ ReiFu21:謝謝 我試試看 12/02 11:03