在Matlab中切片多维数组

时间:2015-07-24 14:10:05

标签: matlab multidimensional-array slice

我想知道为什么在Matlab中:

x = randn(100,100,3,30);
r = x(:,:,1,:);
q = y(:,:,:,1);

q被认为是100x100x3双数组,而r是4-D双数组。 任何提示?

1 个答案:

答案 0 :(得分:2)

实际上r也是一个3D数组,但是4D数组中的第三维仅包含1个元素,因此它是可以使用squeeze删除的单个维度。 Matlab不会自动删除它,因为它不是" last"维度,与q形成对比。

换句话说,

size(r) = 100 100 1 30

size(q) = 100 100 3 1

自动变为100 100 3

在这两种情况下,调用size(squeeze(r))size(squeeze(q))会产生3D数组。

这有点清楚吗?