2013-02-22 77 views
0

我有两个向量,我想让他们的产品没有for循环。这将节省很多时间。避免点产品的循环,matlab

以下是示例代码。

p=1; 
C=zeros(100,1); 
    r_a_= rand(1,3);  
    r_b= rand(100,3);  
    for it=1:size(r_b,1) 
     C(p,1) = dot(r_a_,r_b(it,:)) ; 
    p=p+1 
    end 

要avoide for循环和调用点功能只有一次,我认为这样的

r_a=repmat(r_a_,100,1); 
C = dot(r_a,r_b) %%%%%%%% But obviously it gives wrong answer 

任何想法?

回答

2

你可以用一个矩阵乘法做到这一点,就像这样:

r_a_ = rand(1,3); 
r_b = rand(100,3); 
C = r_a_ * r_b.'