3

私は2つのマトリックス4x2を持っています。このような乗算を実現するにはどうすればよいですか。出力は行列 4x1 である必要があります。ここで、各要素は元の行列の行の要素の積の合計です。このような:

    [1 2;
A =  3 4; 
     5 6;
     7 8]

    [1 2;
B =  3 4; 
     5 6; 
     7 8]

結果の C 行列は次のようになります。

    [1*1 + 2*2;
C =  3*3 + 4*4;
     5*5 + 6*6;
     7*7 + 8*8]
4

3 に答える 3

3

これはさらにきちんとした答えです:

C = dot(A, B, 2);

基本的に、行の内積が必要です。これは MATLAB でベクトル化された操作の 1 つであるため、要素ごとの積よりも効率的で、合計操作よりも効率的です。

于 2012-05-29T16:16:43.503 に答える
2

私のmatlabは少しさびていますが、試してください

D = A .* B;
C = D(:,1) + D(:,2);

最初の操作は、A と B の対応する要素の積を含む 4x2 行列を生成し、2 番目の操作は同じ行の積を追加します。

求めている結果は、行列積の対角要素でもあるため、使用できます

C = diag(A * transpose(B));

ただし、それは大規模なマトリックスでは非常に非効率的です。

于 2012-05-28T23:03:20.203 に答える
1

Aasmund Eldhuset はほぼ正しいですが、最後の行は

    C = D(:,1) + D(:,2);

最終列の各行を合計したいので

于 2012-05-28T23:15:34.417 に答える