以下观察结果如下:
>您提到的不一致性深深埋藏在Matlab语言中:所有数组都被认为至少是2D.例如,ndims(pi)给出2.
> Matlab中的另一个规则是假设所有数组都具有无限多个尾随单例维度.例如,size(pi,5)给出1.
根据观察1,如果这样做将少于两个维度,则squeeze将不会移除单个维度.这在文档中提到:
B = squeeze(A) returns an array B with the same elements as A, but with all singleton dimensions removed. A singleton dimension is any dimension for which size(A,dim) = 1. Two-dimensional arrays are unaffected by squeeze; if A is a row or column vector or a scalar (1-by-1) value, then B = A.
如果你想摆脱第一个单身,你可以利用观察2并使用reshape:
numel_last_a = 1;
numel_last_b = 2;
a = rand(2,20,numel_last_a);
b = rand(2,20,numel_last_b);
as = reshape(sum(a,1), size(a,2), size(a,3));
bs = reshape(sum(b,1), size(b,2), size(b,3));
size(as)
size(bs)
给
ans =
20 1
ans =
20 2