在Matlab中实现多维数组切片



我想知道为什么在Matlab中:

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

q是一个100x100x3的双精度数组,而r是一个4d双精度数组。有提示吗?

实际上r也是一个3D数组,但是4D数组中的第三维仅包含1个元素,因此它是一个可以使用挤压删除的单维。与q相反,Matlab不会自动删除它,因为它不是"最后"维度。

也就是说

size(r) = 100 100 1 30

size(q) = 100 100 3 1

自动变为100 100 3

调用size(squeeze(r))size(squeeze(q))在两种情况下都会得到一个3D数组。

这样清楚一点了吗?

相关内容

  • 没有找到相关文章

最新更新