2016-07-14 10 views
1

MATLABに行列乗算を実行させたいと思います。行列乗算は、すべての乗算演算がプラス演算に置き換えられます。ここで matlabの行列乗算を変更する

は一例です:

a = [3,4; 5,6]; 
b = [1;2]; 

c = modified_multiplication(a,b); % = [3+1+4+2 ; 5+1+6+2] = [10 , 14]. 

どのように私は、元の*動作ほど効率的にこれを行うことができますか?

答えて

1

bsxfunsumを組み合わせることをおすすめします。

c = sum(bsxfun(@plus, a, b.'), 1); 
% 10 14 

bsxfunコールは..等

bsxfun(@plus, a, b.') 
% 4 6 
% 6 8 
aの最初の行のすべての要素と aの2行目のすべての要素に bの2番目のエントリに bの最初のエントリを追加します

次に、sumのアプリケーションは、列を合計します。 a任意のサイズのbについて

+0

ありがとうございます!実際には、c = sum(bsxfun(@plus、a、b。 ')、2);私が欲しいものを私に与えてくれます。 –

1

次のように行うことができる。

c = bsxfun(@plus, sum(a,2), sum(b,1)); 

これは添加の連想性を利用する:第一に、aのとbの各列の各列の和を計算しますすべてのペアごとの加算を計算します。