2012-02-16 89 views
1

矩陣A:10行,50列MATLAB:在基質B由行乘以在矩陣的每一列

A1 A2 A3 ....

B1 B2 B3 ....

C1 C2 C3 .... ...

矩陣B:50行,10列

X1 X2 X3 ....

Y1 Y2 Y3 ....

....

我想按列乘以在矩陣的各行的數據( 1)在基質B,結果將看起來像:

[X1 * A1,X2 * B1,X3 * C1,X4 * D1 ....

X1 * A2,X2 * B2,X3 * C2,X4 * D2 ....

X1 * 。

....]

然後,通過柱(2)中矩陣8乘法矩陣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 2012-02-16 18:43:00

+0

您用文字描述的內容以及您作爲表達的內容似乎並不一致。在你的例子中'[x1 * a1,x2 * b1,x3 * c1,x4 * d1 ...'是A的第一列和B的第一行之間的一個操作。但是您的意思是:矩陣A中的行按矩陣B中的列(1)排序「。 – Kavka 2012-02-17 01:06:34

回答

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 – 2012-02-16 18:39:25

+0

àl'ancienne:P – Oli 2012-02-16 18:56:25

相關問題