Re: [問題] 刪除陣列內相似度高的元素已回收
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,
12/27 01:03
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.36.20.46
推
12/27 07:53, , 1F
12/27 07:53, 1F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):