2

私はベクトルを持っています

V=[ 1 2 3 5 9];

そして、次のように乗算したいと思います:

newVect=zeros(1,length(V));

for i=1:length(V)

    if V(i)==1
       newVect(i)=V(i)*somevaluex
    elseif V(i)==5
       newVect(i)=V(i)*somevaluey
    else
       newVect(i)=V(i);
end

私は実際に10000個の要素を持つ配列を扱っているので、これは面倒に思えます。これを何らかの形でベクトル化に置き換えることはできますか?

4

1 に答える 1

4

出来るよ:

newVect = V .* (   someValuex.*(V==1) +  someValuey.*(V==5) + V.*( (V~=1) & (V~=5) ) )

または少し速い:

newVect=V;
newVect(V==1)=V(V==1)*someValuex;
newVect(V==5)=V(V==5)*someValuey;
于 2012-10-04T22:57:10.540 に答える