0

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

我被困在如何对数组的维度求和。我有数组 A(w0,lambda,2048,2048),我希望能够定义第二个数组 U(w0, 2048, 2048),它由 A 在维度 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) 的第二维的总和,但没有成功......

感谢您的任何指点,如果这已经解决,再次抱歉!

詹姆士。

4

2 回答 2

1

从它的声音来看,你只想要:

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

squeeze()消除了单件维度。

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

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

或者:

U = sum(A, 2);
U = U(:, 1, :, :);
于 2013-03-02T16:08:24.170 回答
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.
于 2013-03-02T16:09:33.753 回答