我已经做了很多搜索,到目前为止还没有找到满意的答案,所以如果这个问题已经提出,我很抱歉。
我坚持如何总结数组的维度。我有数组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)第二维的总和,但是没有成功......
感谢您的任何指示,如果已经解决了,请再次抱歉!
詹姆斯。
答案 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.