Re: [問題] 刪除陣列內相似度高的元素已回收

看板MATLAB作者 (eji)時間16年前 (2009/12/27 02:20), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
nn=2; %要刪前幾名 A=[2 19 5 9 15 14]; [B,i1]=sort(A); %排序 C=diff(B); %差分 [D,i2]=sort(C); %將差分值排序 i3=i2(1:nn); %將差分值最小的前nn名index取出 A2=A; A2(i1(i3))=[] %將A2中對應index的元素刪去 執行結果 A2 = 19 5 9 15 測試例 tic n=100000; nn=round(n/3); %要刪前幾名 這個我不確定你要n/3還是n-n/3 A=rand(n,1); [B,i1]=sort(A); %排序 C=diff(B); %差分 [D,i2]=sort(C); %將差分值排序 i3=i2(1:nn); %將差分值最小的前nn名index取出 A2=A; A2(i1(i3))=[]; %將A2中對應index的元素刪去 toc 執行結果 Elapsed time is 0.066184 seconds. 不知道是不是你所要的 ※ 引述《phylliss (何じゃこりゃ!)》之銘言: 我做的是免疫演算法相關,其中有一個步驟叫抑制細胞,是說要刪除相似度高的解,避免 落入區域最佳解,我沒想到這個步驟真是想破頭了也寫不出來,最好笑的是這個問題我不 知道到底是算簡單還是難?因為怕問題太難沒人願意幫忙,若有人先解出來,我願意給予 1000P幣… -- 問題: 想刪除具n個元素的陣列內相似度高的前n-(n/3)個元素。 ex: A=[2 19 5 9 15 14],欲將陣列內相似度高的前2名元素刪除,剩下4個相似度 較低的元素。 2與 5差3 19與15差4 9與 5差4 15與14差1 所以相似度最高的是14、15 其次的是 2、 5 因為要刪除相似度前2名的元素,所以1.刪除14or15 2.刪除 2or 5 解答: 刪除14、2,ans=[15 5 9 19]; 或刪除15、2,ans=[19 5 9 14]; 或刪除14、5,ans=[2 19 9 15]; 答案可以有這三種,只要答案是任一種既可! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.231.219.24

12/27 01:03,
刪去14 15 答案為[2 19 5 9]不行?
12/27 01:03
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.36.20.46

12/27 07:53, , 1F
錢已寄出稅後1000P,真的非常感謝!
12/27 07:53, 1F
文章代碼(AID): #1BDbFv7f (MATLAB)
文章代碼(AID): #1BDbFv7f (MATLAB)