matlab中三维数组顺序是:行、列、页。二维数组只有行、列。如果两只之间赋值,有一个维数缩减问题需要注意。
例如: A3是三维数组,A3(:,:,1)=[1,2,3;4,5,6]; A3(:,:,2)=[7,8,9;10,11,12];
那么在A2=A3(:,:,1)的赋值中,结果A2是一个二维矩阵(二维数组)(2X3的矩阵)。
在A2=A3(1,:,:)的赋值中,结果A2是一个三维矩阵(1X3X2矩阵)。
本质上它们都应该是一个二维矩阵,为什么后一种赋值中A2变成了一个三维的,而前者是二维的呢?
也就是说前者本来也应该算是三维的,怎么就可以缩减为二维,而后者不能缩减为二维呢?
主要原因就在于,三维矩阵中,第一维度代表行,第二维度代表列,第三维度代表页,当第三维度为1时,代表只有1页,自然缩减为二维。当第一维度为1时,代表只有一行,但是每页都有,所以,从屋里的角度没有缩减为二维。
matlab中三维数组顺序是:行、列、页。二维数组只有行、列。如果两只之间赋值,有一个维数缩减问题需要注意。
例如: A3是三维数组,A3(:,:,1)=[1,2,3;4,5,6]; A3(:,:,2)=[7,8,9;10,11,12];
那么在A2=A3(:,:,1)的赋值中,结果A2是一个二维矩阵(二维数组)(2X3的矩阵)。
在A2=A3(1,:,:)的赋值中,结果A2是一个三维矩阵(1X3X2矩阵)。
本质上它们都应该是一个二维矩阵,为什么后一种赋值中A2变成了一个三维的,而前者是二维的呢?
也就是说前者本来也应该算是三维的,怎么就可以缩减为二维,而后者不能缩减为二维呢?
主要原因就在于,三维矩阵中,第一维度代表行,第二维度代表列,第三维度代表页,当第三维度为1时,代表只有1页,自然缩减为二维。当第一维度为1时,代表只有一行,但是每页都有,所以,从屋里的角度没有缩减为二维。
如果最后需要2维结果,方法1:
采用reshape处理,
方法2:
采用:squeeze 处理
方法3:
在定义的时候,抽取元素形式为A=B(:,:,i);