[討論] 請教向量化寫法

看板MATLAB作者 (house salesman)時間12年前 (2013/05/16 10:46), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串1/2 (看更多)
這是我原本的寫法 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

05/16 11:15, , 1F
Nsol Nvar Cg gBest Cw Cp 的定義是什麼
05/16 11:15, 1F

05/16 11:15, , 2F
還有可否稍微解釋一下你這段code想要做什麼
05/16 11:15, 2F

05/16 11:58, , 3F
已回覆到下一篇,感謝
05/16 11:58, 3F

05/16 14:32, , 4F
試試看將 X([sol,cols]) 改成 X(sol, cols),pX 亦同
05/16 14:32, 4F

05/16 14:38, , 5F
感謝大俠拔刀相助,成功了
05/16 14:38, 5F
文章代碼(AID): #1Hb4YXMp (MATLAB)
文章代碼(AID): #1Hb4YXMp (MATLAB)