0

だから私は次の行列を持っています:

A = [1 2 3; 4 5 6];
B = [0.5 2 3];

ベクトルの要素数が列の数と一致する限り、ベクトルと行列を要素で乗算できるようにする関数を MATLAB で作成しています。にAは 3 つの列があります。

1 2 3
4 5 6

Bにも3つの要素があるため、これは機能するはずです。と に基づいて次の出力を生成しようとしていAますB

0.5  4  9
2   10 18

私のコードは以下です。私が間違っていることを誰かが知っていますか?

function C = lab11(mat, vec)
C = zeros(2,3);
[a, b] = size(mat);
[c, d] = size(vec);
for i = 1:a
      for k = 1:b
          for j = 1
              C(i,k) = C(i,k) + A(i,j) * B(j,k);
          end
      end
  end
end
4

2 に答える 2

4

MATLAB には、関数でこれを行う機能が既にありbsxfunます。bsxfun2 つの行列を取り、行列が同じサイズになるまで単一次元を複製し、2 つの行列に対してバイナリ演算を実行します。したがって、あなたの例では、次のようにするだけです。

C = bsxfun(@times,mat,vec);
于 2014-11-12T02:48:17.117 に答える