2011-11-07 90 views

回答

5

聽起來就像你想要一個矩陣向量的乘法。

1> x = randn(3, 2) 
x = 

    0.62055 -1.08060 
    -0.24064 -2.56097 
    -0.53202 -0.49712 

2> y = randn(1, 2) 
y = 

    -1.26010 -0.25200 

3> x * y' 
ans = 

    -0.50964 
    0.94860 
    0.79567 

注意轉座y'

+0

這不會做所要求的。不應該有轉置,'y'應該是2x1(如問題中所述)。 –

+0

@BenVoigt:現在看起來很順從。我在答案中沒有看到「不應該有轉置」。 –

+0

好吧,問題確實指定了1x2向量。所以你的編輯,去掉'x'上的轉置,改變和轉換'y'的大小是正確的。 +1。 –

0
A = randn(3, 2); 
B = randn(1, 2); 

C = A(:, 1) * B(1) + A(:, 2) * B(2); % size(C) = [3, 1] 

如果你要擴展到有很多更多的列一個更大的陣列,不想寫出來完全對C的方程,可以使用repmat和逐元素相乘

A = randn(300, 200); 
B = randn(1, 200); 

C = sum(A .* repmat(B, 300, 1), 2); 
2

我認爲你可以bsxfun和和的組合做到這一點,就像這樣:

a = rand(3,2); 
b = rand(1,2); 
result = sum(bsxfun(@times,a,b),2) 

result = 

    0.333379034494579 
    0.613480382112731 
    0.093702948350719 

注意尺寸參數總和沿每一行(而不是默認的,這是d總結自己的專欄)。 BSXFUN應用標量擴展的二元函數,這對於此處的乘法部分是理想的。

相關問題