[問題]多維矩陣的維度縮減

看板MATLAB作者 (薛丁格的貓)時間11年前 (2014/10/17 03:06), 編輯推噓1(108)
留言9則, 3人參與, 最新討論串1/1
大家好, 想請問一下,如果我現在手邊有個m*2*n (三維)矩陣但是我想把它變成m*n矩陣 在matlab裡面要如何寫指令呢? 我想過先宣告一個空的矩陣再用for loop把東西放進去,但是問題出在matlab自動把平面 認定成m*2的平面延伸n次,因此似乎無法強迫matlab去認定這矩陣為m*n的平面n延伸2次, 因此無法正確放入對應的數值。 感覺是個不難的問題,但是想法一直卡住,所以上來請大家幫忙,謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 160.39.141.21 ※ 文章網址: http://www.ptt.cc/bbs/MATLAB/M.1413486363.A.069.html

10/17 04:05, , 1F
reshape?
10/17 04:05, 1F

10/17 04:54, , 2F
reshape只能用在維度都不變的狀態,ie. m*n*2
10/17 04:54, 2F

10/17 04:55, , 3F
但我弄成m*n就不行了QQ,但還是謝謝喔
10/17 04:55, 3F

10/17 05:13, , 4F
剛想出來了for i=1:n new(:,i)=old(:,1,i) 不知對不對
10/17 05:13, 4F

10/17 11:14, , 5F
a = zeros(m, 2, n);
10/17 11:14, 5F

10/17 11:15, , 6F
b = permute(a, [1 3 2]);
10/17 11:15, 6F

10/17 11:18, , 7F
話說a有m*2*n個元素,你要的是2個有m*n個元素的矩陣嗎?
10/17 11:18, 7F

10/17 11:20, , 8F
若是的話也可 b1=squeeze(a(:, 1, :));
10/17 11:20, 8F

10/17 11:21, , 9F
b2=squeeze(a(:, 2, :));
10/17 11:21, 9F
文章代碼(AID): #1KG1SR1f (MATLAB)
文章代碼(AID): #1KG1SR1f (MATLAB)