How to get rid of repeating values inside an array

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

Thank you for help. I am getting an error
Undefined function 'histcounts' for input arguments of type 'double'.
histcounts() was introduced with R2014b. You don't need it though. unique() is enough. Andrei was giving you two alternatives.
fixed

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by