0

2つのベクトルがあり、forループなしでそれらの内積を取得したいと思います。それは多くの時間を節約するでしょう。

これがサンプルコードです。

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

forループを回避し、ドット関数を1回だけ呼び出すために、私はこのように考えました

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

何か案が?

4

1 に答える 1

2

次のように、行列の乗算でそれを行うことができます。

r_a_ = rand(1,3);
r_b = rand(100,3); 
C = r_a_ * r_b.'
于 2013-02-22T19:06:55.213 に答える