在 Matlab 中切片多维数组
slicing multidimensional array in Matlab
我想知道为什么在 Matlab 中:
x = randn(100,100,3,30);
r = x(:,:,1,:);
q = y(:,:,:,1);
q 是一个 100x100x3 双精度数组,而 r 是一个 4-D 双精度数组。
有什么提示吗?
其实r
也是一个3D数组,但是4D数组中的第3维只包含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 数组。
是不是更清楚了一些?
我想知道为什么在 Matlab 中:
x = randn(100,100,3,30);
r = x(:,:,1,:);
q = y(:,:,:,1);
q 是一个 100x100x3 双精度数组,而 r 是一个 4-D 双精度数组。 有什么提示吗?
其实r
也是一个3D数组,但是4D数组中的第3维只包含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 数组。
是不是更清楚了一些?