作者brahmsliu (薛丁格的猫)
看板MATLAB
标题[问题]多维矩阵的维度缩减
时间Fri Oct 17 03:06:00 2014
大家好,
想请问一下,如果我现在手边有个m*2*n (三维)矩阵但是我想把它变成m*n矩阵
在matlab里面要如何写指令呢?
我想过先宣告一个空的矩阵再用for loop把东西放进去,但是问题出在matlab自动把平面
认定成m*2的平面延伸n次,因此似乎无法强迫matlab去认定这矩阵为m*n的平面n延伸2次,
因此无法正确放入对应的数值。
感觉是个不难的问题,但是想法一直卡住,所以上来请大家帮忙,谢谢!!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 160.39.141.21
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/MATLAB/M.1413486363.A.069.html
1F:推 jack10313: reshape? 10/17 04:05
2F:→ brahmsliu: reshape只能用在维度都不变的状态,ie. m*n*2 10/17 04:54
3F:→ brahmsliu: 但我弄成m*n就不行了QQ,但还是谢谢喔 10/17 04:55
4F:→ brahmsliu: 刚想出来了for i=1:n new(:,i)=old(:,1,i) 不知对不对 10/17 05:13
5F:→ mp19990920: a = zeros(m, 2, n); 10/17 11:14
6F:→ mp19990920: b = permute(a, [1 3 2]); 10/17 11:15
7F:→ mp19990920: 话说a有m*2*n个元素,你要的是2个有m*n个元素的矩阵吗? 10/17 11:18
8F:→ mp19990920: 若是的话也可 b1=squeeze(a(:, 1, :)); 10/17 11:20
9F:→ mp19990920: b2=squeeze(a(:, 2, :)); 10/17 11:21