加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

matlab 三维矩阵转二维矩阵(转)

(2013-11-13 19:00:42)
标签:

健康

分类: matlab

matlab 三维矩阵转二维矩阵(转)

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

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有