2012-02-16 7 views
1

行列Aの行の行列Aの各列を掛け:10行、50列MATLAB:行列B

A1 A2 A3 ....

のB1 B2 B3を....

C1 C2 C3 ....

...

行列B:50行、10列

×1×2×3 ....

Y1 Y2 Y3 ....

....

私は(列の行列Aの各列のデータを乗算したいです1)行列Bには、結果は次のようになります。

[X1 * a1を、X2 * b1と、X3 * c1と、X4 * D1 ....

X1 * a2と、X2 * b2と、X3 * c2は、X4 * D2 ....

×1 * 。そして

....]

、マトリックス8の列(2)の行列Aの各列を乗算:[Y1 * A1、Y2 * B1

Y3 * C1、Y4 * D1 ....

Y1 * A2、Y2 * B2、Y3 * C2、Y4 * D2 ....

をY1 *。 ....]

その後、行によって(3)コラム(50)

まで私は、スクリプトを探しています:)

+0

あなたはBの行(10)までを意味しましたか?コラム(50)の代わりに。 – Oli

+0

あなたが言葉で説明したものと、表現として挙げたものは、一貫していないようです。あなたの例では、[[x1 * a1、x2 * b1、x3 * c1、x4 * d1 ...]はAの最初の列とBの最初の行の間の演算です。行列Aの行は行列Bの列(1)で表されます。 – Kavka

答えて

5

あなたはbsxfunを使用することができます。ここで

A=rand(10,50); 
B=rand(50,10); 
C=bsxfun(@times,A,permute(B,[3 1 2])); 

C(:,:,1)はあなたの最初の結果の行列で、かつC(:,:,2)二でしょう...

+0

良い古いbsxfun:P –

+0

àl'ancienne:P – Oli