Matlab:数组维度的总和

时间:2013-03-02 15:23:02

标签: arrays matlab multidimensional-array sum

我已经做了很多搜索,到目前为止还没有找到满意的答案,所以如果这个问题已经提出,我很抱歉。

我坚持如何总结数组的维度。我有数组A(w0,lambda,2048,2048),我希望能够定义第二个数组U(w0,2048,2048),它由A over dimension lambda之和组成。

到目前为止,我一直在定义A和U如下:

A = zeros(length(w0),length(lambda),2048,2048);
U = zeros(length(w0),2048,2048);
for ii = 1:length(w0)                    % Scan through spot sizes
    for aa = 1:length(lambda)            % Scan through wavelengths
          A(ii,aa,:,:) = ASM(w0(ii),lambda(aa),z1,z2);
    end
    U(ii,:,:) = sum(A,2);
end

ASM只是一个功能。 z1和z2在前面定义,在这里不相关。

我一直试图想出其他可能的方法来找到U(w0,2048,2048)作为A(lambda)第二维的总和,但是没有成功......

感谢您的任何指示,如果已经解决了,请再次抱歉!

詹姆斯。

2 个答案:

答案 0 :(得分:1)

从它的声音中,你只想要:

U = squeeze(sum(A, 2));

squeeze()消除了单例维度。

以下是两种替代解决方案:

U = reshape(sum(A, 2), [length(w0) 2048 2048]);

或:

U = sum(A, 2);
U = U(:, 1, :, :);

答案 1 :(得分:0)

尝试将“sum”函数与维度参数一起使用,并将结果折叠到所需的维度上。

z = rand(2,3,2,2);
q = sum(z,2); %sum all 3 matrices of size 2x2x2 to get 2x1x2x2 result
zz = q(:,1,:,:); %zz is now 2x2x2, by collapsing the dimension 2.