How to remove duplicates in an array
1 回表示 (過去 30 日間)
古いコメントを表示
Ex: In the array x=[1 2 2 3 3 3 4 5], i want to eliminate all repeating elements (2,3) and retain non-repeating elements (1,4,5)
i.e., If x=[1 2 2 3 3 3 4 5], answer should be x=[1 4 5]
0 件のコメント
採用された回答
Octa
2013 年 7 月 2 日
編集済み: Octa
2013 年 7 月 2 日
>> x=[1 2 2 3 3 3 4 5];
>> y = zeros(size(x));
>> for i = 1:length(x)
y(i) = sum(x==x(i));
end
>> for i=length(y):-1:1
if(y(i)>=2)
x(i)=[];
end
end
And your output will be
>>x
1 4 5
1 件のコメント
Jan
2013 年 7 月 2 日
@Octa: Please do not post solutions of homework questions. Reducing the size of an array iteratively has a bad performance. An efficient and more matlabish approach for the 2nd loop:
x = x(x >= 2);
その他の回答 (2 件)
Image Analyst
2013 年 7 月 2 日
Sounds like homework. As hints, I'd probably use max() to find the greatest integer and the histogram edges, histc() to get the counts, and ismember() to help with removal. It's just a few lines of code - see if you can do it.
0 件のコメント
Jan
2013 年 7 月 2 日
You can also SORT the values at first and obtain the sorting index as 2nd output. Then use DIFF to find equal elements. Finally you can remove them and restore the original order by using the sorting index.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!