Need to remove repeated adjacent elements in an array
古いコメントを表示
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 件のコメント
Michael Cappello
2015 年 5 月 15 日
x(diff(x)==0) = []
Matthew Rademacher
2015 年 5 月 16 日
Ravi Mravi
2017 年 10 月 30 日
Excellent solution
採用された回答
その他の回答 (2 件)
Joseph Cheng
2015 年 5 月 15 日
編集済み: Joseph Cheng
2015 年 5 月 15 日
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
2015 年 5 月 15 日
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)]
カテゴリ
ヘルプ センター および File Exchange で Programming についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!