作者jiing24 (house salesman)
看板MATLAB
标题[讨论] 请教向量化写法
时间Thu May 16 10:46:54 2013
这是我原本的写法
for sol=1:Nsol
for var=1:Nvar
random_number=rand;
if random_number < Cg
X(sol,var)=pX(gBest,var);
elseif random_number< Cp
X(sol,var)=pX(sol,var);
elseif random_number < Cw
continue;
else
X(sol,var)=rand*(UB-LB)+LB;
end
end
end
我想改成向量写法,结果我写成这样,但答案行为好像不对
for sol=1:Nsol
random_numbers= rand(1,Nvar);
cols = find(random_numbers < Cg );
X([sol,cols]) = pX([gBest,cols]);
cols = find( (random_numbers >= Cg) & (random_numbers < Cp) );
X([sol,cols]) = pX([sol,cols]);
cols = find( random_numbers >= Cw);
X([sol,cols]) = rand(size(X([sol,cols]))).*(UB-LB)+LB;
end
可否帮我看看我哪里写错了,看了好久看不出来
感谢!
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.37.189.237
1F:→ jatj:Nsol Nvar Cg gBest Cw Cp 的定义是什麽 05/16 11:15
2F:→ jatj:还有可否稍微解释一下你这段code想要做什麽 05/16 11:15
3F:→ jiing24:已回覆到下一篇,感谢 05/16 11:58
4F:推 CBET:试试看将 X([sol,cols]) 改成 X(sol, cols),pX 亦同 05/16 14:32
5F:→ jiing24:感谢大侠拔刀相助,成功了 05/16 14:38