Need to remove repeated adjacent elements in an array
Afficher commentaires plus anciens
I need to turn
[1 1 1 1 2 2 2 6 6 6 6 2 2 2 2] into [1 2 6 2]
unique() gives [1 2 6], but I want to preserve the second value
any advice?
3 commentaires
Michael Cappello
le 15 Mai 2015
x(diff(x)==0) = []
Matthew Rademacher
le 16 Mai 2015
Ravi Mravi
le 30 Oct 2017
Excellent solution
Réponse acceptée
Plus de réponses (2)
Joseph Cheng
le 15 Mai 2015
Modifié(e) : Joseph Cheng
le 15 Mai 2015
you can use diff to determine the consecutive same value numbers
test = [1 1 1 1 2 2 2 6 6 6 6 2 2 2 2]
mtest = [test test(end)-1];
difftest = diff(mtest)
output = test(difftest~=0)
the mtest is the modified test number to get the last value not the same. if you look at the output of difftest you see that we get the positions of the transitions from one number to another.
Image Analyst
le 15 Mai 2015
Here's one way:
m = [1 1 1 1 2 2 2 6 6 6 6 2 2 2 2]
logicalIndexes = [0, diff(m)] ~= 0
output = [m(1), m(logicalIndexes)]
Catégories
En savoir plus sur Programming dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!