我想知道为什么在Matlab中:
x = randn(100,100,3,30);
r = x(:,:,1,:);
q = y(:,:,:,1);
q被认为是100x100x3双数组,而r是4-D双数组。 任何提示?
答案 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数组。
这有点清楚吗?