MATLAB中矩陣reshape的順序規律
首先,使用以下代碼生成一個(3,4,5)的三維矩陣:
count = 0;
for i = 1:3
for j = 1:4
for k = 1:5
count = count + 1;
M(i,j,k) = count;
end
end
end
如果按照三維坐標中,x,y表示水平軸,z表示垂直軸的話,上面的矩陣可以幾何表示為:
使用 MM = reshape(M,12,5);
將M矩陣轉換為(12,5)的二維矩陣,轉換后的MM矩陣為:
可見它是按照先排x方向,后排y方向的順序排列的,寫成程序應該是:
count = 0;
for j = 1:4
for i = 1:3
count = count+1;
MM(count,:) = M(i,j,:);
end
end
使用MM = reshape(M,60,1)
,將M化為(60,1)的一維矩陣,則為:
可見它是按照x方向排,然后按照y方向排,最后按照z方向排。
總結,matlab的reshape()
函數的排列是按照維度順序按列排列的。