2016-02-12 87 views
2

我有大小n的兩個向量和m乘法無環或矩陣

a = [a1 a2 ... an]; 
b = [b1 b2 ... bm]; 

,我想「乘」他們獲得的結果:

c = 
    a1*b1 a1*b2 ... a1*bm 
    a2*b1 a2*b2 ... a2*bm 
    .  .   . 
    .  .   . 
    an*b1 an*b2 ... an*bm 

有沒有什麼簡單的方法來獲得這樣的結果,而不訴諸於循環或矩陣?

回答

5
  1. 應用bsxfuna列版本和b行版本:

    a = 1:3; %// example input 
    b = 10:10:40; %// example input 
    c = bsxfun(@times, a(:), b(:).'); %'// or bsxfun(@times, b(:).', a(:)); 
    

    結果:

    c = 
        10 20 30 40 
        20 40 60 80 
        30 60 90 120 
    
  2. ,或者可能速度更快,使用的amatrix multiplication作爲列向量乘以b作爲行向量,依次爲:

    c = a(:)*b(:).'; 
    
  3. 你想要什麼,也可以解釋爲Kronecker product,所以你可以使用kron

    c = kron(a(:), b(:).'); %'// or kron(b(:).', a(:)) 
    
+0

你已經把矩陣乘法,我會刪除我的答案。 – 2016-02-12 10:12:51