2

A*BMatlabでは、またはのような「素敵な」ベクトル操作を使用できることを知っていますA.*B

あなたが持っている場合

A=[2, 2];
B=[3, 1];

それはロジックです。使用できませんA*BA.*Bwhat isA[1]*B[1], A[2]*B[2]と result isを使用できます[6, 2]

私が書いている多くの「スクリプト」では、何かを使用する必要があることがよくあります。その結果、次のようになります。

[6, 6; 
2, 2]

したがって、基本的には forcycle を使用する必要があります (:):

C=zeros(2,2);
for i=1:size(A,1)
  C(i,:)=A*B(i);
end

そして、どうすれば(可能であれば)forcyclesなしでこれを書き直すことができますか?出来ますか?この 2 つの要素の 2 つのベクトルは、必要なものを理解するにはおそらく悪いです。別の例:

A=[1,2,3,4,5]
B=[2,4]

結果:

[2,4,6,8,10;
4,8,12,16,20]

C(1:end < ====
GO BY ONE ELEMENT,:)=A*B(1:end <===== GO BY ONE ELEMENT)
--> 全体のベクトル A を取り、乗算します。 Bの最初の要素でそれを保存し、A列とB行を持つマトリックスの最初の行に保存します..
-->ベクトルA全体を取り、Bの2番目の要素で乗算し、A列を持つマトリックスの2番目の行に保存しますおよび B 行..
--> 全体のベクトル A を取得し、B の 3 番目の要素で乗算し、A 列と B 行を持つ行列の 3 番目の行に保存します..
--> ...
--> 全体のベクトル A を取得しますそれをBのLAST要素で乗算し、A列とB行を持つマトリックスのLAST行に保存します..

4

2 に答える 2

4

bsxfunこの目的で使用できます

P = bsxfun(@times,A,B')

これは与える

A =  1     2     3     4     5
B =  2     4


P =  2     4     6     8    10
     4     8    12    16    20
于 2013-10-04T22:32:57.853 に答える