我有一个 3d 矩阵 (n-by-m-by-t
) 在 MATLAB 中表示n-by-m
一段时间内网格中的测量值。我想要一个二维矩阵,其中空间信息消失了,只有n*m
随着时间的推移测量t
剩下(即:n*m-by-t
)
我怎样才能做到这一点?
你需要命令reshape http://www.mathworks.com/help/matlab/ref/reshape.html:
假设你的初始矩阵是(只是为了让我获取一些数据):
a=rand(4,6,8);
然后,如果最后两个坐标是空间坐标(时间为 4,m 为 6,n 为 8),则使用:
a=reshape(a,[4 48]);
最终得到一个 4x48 的数组。
如果前两个是空间的,最后一个是时间(m 为 4,n 为 6,时间为 8),则使用:
a=reshape(a,[24 8]);
最终得到一个 24x8 的数组。
这是一个快速的 O(1) 操作(它只是调整数据形状的标头)。还有其他方法可以做到这一点,例如a=a(:,:)
压缩最后两个维度,但重塑速度更快。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)