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);

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐