我想知道为什么在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数组。
这样清楚一点了吗?