matlab三维矩阵转为二维矩阵

用matlab读取一个6波段影像,读取的是m*n*6的三维矩阵,请问如何用reshape或者其他命令,把这个矩阵转化为k×6的二维矩阵呢?(其实就是在三维情况下,把m×n的矩阵化为一维的)
谢谢!

方法1:
采用reshape处理。
方法2:
采用:squeeze 处理。
方法3:
在定义的时候,抽取元素形式为A=B(:,:,i)。

1.matlab中三维数组顺序是:行、列、页。二维数组只有行、列。如果两只之间赋值,有一个维数缩减问题需要注意。

前者可以缩减为二维,而后者不能缩减为二维的主要原因就在于,三维矩阵中,第一维度代表行,第二维度代表列,第三维度代表页,当第三维度为1时,代表只有1页,自然缩减为二维。当第一维度为1时,代表只有一行,但是每页都有。

2.matlab中三维数组顺序是:行、列、页。二维数组只有行、列。如果两只之间赋值,有一个维数缩减问题需要注意。

前者本来也应该算是三维的,可以缩减为二维,而后者不能缩减为二维的主要原因就在于,三维矩阵中,第一维度代表行,第二维度代表列,第三维度代表页,当第三维度为1时,代表只有1页,自然缩减为二维。当第一维度为1时,代表只有一行,但是每页都有。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-31
对啊,可以 用reshape来实现,只是实现的格式需要你自己把握
比如
for ii=1:4
for jj=1:3
for kk=1:2
A(kk,jj,ii)=ii+jj+kk;
end
end
end

B=reshape(A,[],3)

就是把Areshape成n*3的矩阵了
第2个回答  推荐于2018-02-26
a=rand(m,n,6)
b=reshape(m*n,6)

一个示例:
>> a=rand(2,3,2)
a(:,:,1) =
0.8147 0.1270 0.6324
0.9058 0.9134 0.0975
a(:,:,2) =
0.2785 0.9575 0.1576
0.5469 0.9649 0.9706
>> b=reshape(a,6,2)
b =
0.8147 0.2785
0.9058 0.5469
0.1270 0.9575
0.9134 0.9649
0.6324 0.1576
0.0975 0.9706本回答被提问者和网友采纳