作者mp19990920 (郝渴連)
看板MATLAB
標題Re: [問題] 關於矩陣合併
時間Mon Jan 7 19:11:52 2013
※ 引述《wk4xu4j (ha)》之銘言:
: 想問假設有A1矩陣,A2矩陣,兩者皆為MxN,想將他們併成一個
: A為2MxN,且A(1,1) A(3,1),依序下去,為A1(1,1) A1(2,1),依序下去的值,
: 到A(2M-1,1)為A1(M, 1),依此方式到A(2M-1,N)為A1(M,N)。
: 而A(2,1) A(4,1) 為A2(1,1) A2(2,1)依序到A(2M,N)為A2(M,N)。
: 即做一個新的較大的矩陣,將舊的兩個矩陣的值,交錯的填進去。
: 有什麼好方法嗎?我用兩個for去跑,要跑很久。還是我for有寫錯讓他到不了終點?
: for i=1:2:N-1
: for j=1:2:2*M-1
: A(j, i)=A1((j+1)/2, (i+1)/2)
: end
: end
請不要使用無謂的迴圈
[M1, N1] = size(A1);
[M2, N2] = size(A2);
A = zeros(M1+M2, N1);
A(1:2:end, :) = A1;
A(2:2:end, :) = A2;
p.s.
上一篇的 onezillion大大 解法很棒,
可是有小小的瑕疵,
M跟N若很大時reshape速度很慢,
但若能確定M,N的值域時,
一行的code比較美
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.21.63.132
1F:→ wk4xu4j:這個好,謝謝 01/07 21:00
2F:推 wk4xu4j:補推,感謝 01/07 21:22
3F:推 vincent59:matlab 能用矩陣就用矩陣囉 01/07 21:27
4F:推 diva:推 01/07 23:09
※ 編輯: mp19990920 來自: 111.67.55.174 (01/08 08:14)
※ 編輯: mp19990920 來自: 111.67.55.174 (01/08 08:17)
5F:推 greg2977:我太弱了QQ 01/08 09:28
6F:→ onezillion:哈,沒考慮到速度,只因為推文只能一行 XD 01/08 11:40