How to get rid of repeating values inside an array

3 vues (au cours des 30 derniers jours)
Rokki
Rokki le 19 Sep 2017
Modifié(e) : Andrei Bobrov le 21 Sep 2017
I have a matrix
a=[1 2 3 3 4 4 5];
I want to get rid of values 3 and 4 as they are repeating so that the output becomes
b=[1 2 5]

Réponse acceptée

José-Luis
José-Luis le 19 Sep 2017
Modifié(e) : José-Luis le 19 Sep 2017
b = a(sum(bsxfun(@eq,a,a'))==1)
  2 commentaires
Rokki
Rokki le 19 Sep 2017
Thank you very much
José-Luis
José-Luis le 19 Sep 2017
Modifié(e) : José-Luis le 19 Sep 2017
My pleasure.
Please keep in mind that this is inefficient for large arrays though. Just using unique() should take you where you need to go.

Connectez-vous pour commenter.

Plus de réponses (1)

Andrei Bobrov
Andrei Bobrov le 19 Sep 2017
Modifié(e) : Andrei Bobrov le 21 Sep 2017
v = unique(a);
b = v(histcounts(a,[v(:);v(end)+eps]) == 1);
or
v = unique(a);
b = v(histc(a,v) == 1);
or
aa = sort(a);
t = diff(aa);
b = aa([1 t] & [t 1]);
  3 commentaires
José-Luis
José-Luis le 19 Sep 2017
histcounts() was introduced with R2014b. You don't need it though. unique() is enough. Andrei was giving you two alternatives.
Andrei Bobrov
Andrei Bobrov le 19 Sep 2017
fixed

Connectez-vous pour commenter.

Catégories

En savoir plus sur NaNs dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by