How to delete elements that have repeats in arrays
Ältere Kommentare anzeigen
Hey, i'm working on a problem where i have to check an array and delete all the elements that appear more than once in it. This is not what the unique function does(it leaves one copy of the repeated element) and i'm not sure if there's a function that does this, any ideas?
1 Kommentar
Mickey
am 12 Aug. 2011
Antworten (4)
Oleg Komarov
am 12 Aug. 2011
Your original question is actually different from what you're trying to accomplish.
To remove duplicate rows:
[unV,locA,locB] = unique(v,'rows');
v(locA(histc(locB,1:size(unV,1)) == 1),:)
1 Kommentar
Andrei Bobrov
am 13 Aug. 2011
[uv, ~ ,ui] = unique(v,'rows')
out = uv(histc(ui,1:max(ui))==1,:)
Walter Roberson
am 12 Aug. 2011
For single row,
input= [2,3,4,4,5,6,2,2];
[b, i1] = unique(input,'first');
[b, i2] = unique(input,'last');
b(i1==i2);
For multi-rows, if it is unique rows you want to identify,
input = [2,3,4,5
7,3,7,8
2,4,2,1
2,3,4,5
5,6,3,2
2,3,4,5];
[b, i1] = unique(input, 'rows', 'first');
[b, i2] = unique(input, 'rows', 'last');
b(i1==i2,:)
1 Kommentar
Fangjun Jiang
am 12 Aug. 2011
That's a good one, Walter! I was thinking that it could be solved using unique() and setdiff() or setxor() but couldn't figure it out.
Friedrich
am 12 Aug. 2011
Hi,
try this
input= [2,3,4,4,5,6,2,2];
un_in = unique(input);
n = hist(input,numel(un_in));
oputput = un_in(n==1)
1 Kommentar
Oleg Komarov
am 12 Aug. 2011
I would suggest to use histc since hist wraps around it.
Mickey
am 12 Aug. 2011
Kategorien
Mehr zu Data Import from MATLAB finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!