Joh*_*ith 5 arrays matlab transpose matrix multidimensional-array
请让我试着通过一个例子来解释
numel_last_a = 1;
numel_last_b = 2
a = rand(2,20,numel_last_a);
b = rand(2,20,numel_last_b);
size(squeeze(sum(a,1)))
size(squeeze(sum(b,1)))
Run Code Online (Sandbox Code Playgroud)
在这种情况下,输出将是
ans = 1 20
ans = 20 2
Run Code Online (Sandbox Code Playgroud)
这意味着我必须捕获numel_last_x == 1的特殊情况,以应用转置操作以便与后续步骤保持一致.我猜想必须有一个更优雅的解决方案.你能帮助我吗?
编辑:对不起,代码错了!
以下观察结果如下:
ndims(pi)给出2.size(pi,5)给出1.根据观察1,squeeze如果这样做会少于两个维度,则不会删除单个维度.这在文档中提到:
B = squeeze(A)返回一个B具有相同元素的数组A,但删除了所有单例尺寸.单身维度是其中的任何维度size(A,dim) = 1.二维阵列不受影响squeeze; 如果A是行或列向量或标量(1乘1)值,则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)
Run Code Online (Sandbox Code Playgroud)
给
ans =
20 1
ans =
20 2
Run Code Online (Sandbox Code Playgroud)