0

かなりの数の検索を行ったが、これまで満足のいく答えを見つけることができなかったので、この質問が既に提起されていたら申し訳ありません.

配列の次元を合計する方法に行き詰まっています。私は配列 A(w0,lambda,2048,2048) を持っており、次元ラムダ上の A の合計で構成される 2 番目の配列 U(w0, 2048, 2048) を定義できるようにしたいと考えています。

これまでのところ、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 は以前に定義されており、ここでは関係ありません。

A (ラムダ) の 2 番目の次元の合計として U(w0,2048,2048) を見つける他の可能な方法を考え出そうとしていますが、成功していません...

指摘していただきありがとうございます。これがすでに解決されている場合は、もう一度申し訳ありません!

ジェームズ。

4

2 に答える 2

1

その音から、あなたはただ欲しい:

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

squeeze()大きさが 1 の次元を削除します。

2 つの代替ソリューションを次に示します。

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 に答える