[討論] 讓兩個矩陣的列數交錯

看板MATLAB作者 (ReiFu)時間13年前 (2012/12/02 10:30), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串1/1
我有兩個矩陣 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

12/02 11:00, , 1F
C = zeros(size(A,1)+size(B,1),size(A,2));
12/02 11:00, 1F

12/02 11:00, , 2F
C( 1:2:size(C,2) , : ) = A;
12/02 11:00, 2F

12/02 11:01, , 3F
C( 2:2:size(C,1)-1 , : ) = B;
12/02 11:01, 3F

12/02 11:02, , 4F
第二行請更正 C( 1:2:size(C,1) , : ) = A;
12/02 11:02, 4F

12/02 11:03, , 5F
謝謝 我試試看
12/02 11:03, 5F
文章代碼(AID): #1Gkhr000 (MATLAB)
文章代碼(AID): #1Gkhr000 (MATLAB)