我有一个向量
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 个元素的数组。这可以以某种方式被矢量化取代吗?
最佳答案
你可以这样做:
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;
关于matlab - 需要使用 if 语句来乘以向量 : vectorisation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12737189/