[問題] 有辦法簡化此程式嗎?? 想減少迴圈數 或者是讓執行速度快已回收

看板MATLAB作者 (阿發)時間14年前 (2010/03/31 11:54), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/1
pop1=cell_ha; pop2=cell_hb; index1=randsrc((popsize-popsize*Pm_elit)/2,Bit,[1 0;Pc (1-Pc)]); for j=1:(popsize-popsize*Pm_elit)/2 for i=1:Bit if index1(j,i)==1 pop1(j,i)=pop2(j,i); cell_hb(j,i)=cell_ha(j,i); end end end pop1 pop2 是兩個二進制資料 那我會產生一個同大小的二進制index1 主要目的是透過 這個index1 inde1裡面有1的部分 ~ 兩個pop1 pop2做交換位置的動作 程式我已經做出來 只是想請問板上的板友 不知道此程式 是否有辦法縮短 ?? 非常感謝幫忙 ~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.124.42.216

03/31 12:13, , 1F
temp=(pop1(index1==1));pop1(index1==1)=pop2(index1==1);
03/31 12:13, 1F

03/31 12:13, , 2F
pop2(index1==1)=temp;
03/31 12:13, 2F

03/31 19:24, , 3F
非常感謝 好神速的方式 連迴圈都省略 謝謝您
03/31 19:24, 3F

03/31 19:24, , 4F
這樣可以節省到很多時間 ^^ 謝謝
03/31 19:24, 4F
文章代碼(AID): #1BiiUFir (MATLAB)