Info

この質問は閉じられています。 編集または回答するには再度開いてください。

Join repeated continuous elements of a vector

1 回表示 (過去 30 日間)
Alexander
Alexander 2020 年 2 月 27 日
閉鎖済み: MATLAB Answer Bot 2021 年 8 月 20 日
Hi, is there a simple method to join repeated continuous elements of a vector in Matlab?
For example if the input is:
in = [1 1 1 2 2 3 6 6 6 1 1 1 4 4 4 2 2 2 6 4 4]
how can i get
out = [1 2 6 1 4 2 6 4]
Note that since 3 is not repeted, it is not in 'out' vector. Same for the only 6.
thanks !
  2 件のコメント
Walter Roberson
Walter Roberson 2020 年 2 月 27 日
No, there is no simple method. There are some methods that take a few lines.
Alexander
Alexander 2020 年 2 月 27 日
Thank you !

回答 (1 件)

Are Mjaavatten
Are Mjaavatten 2020 年 2 月 27 日
in = [1 1 1 2 2 3 6 6 6 1 1 1 4 4 4 2 2 2 6 4 4];
i = 1;
count = 1;
out = [];
a = in(1);
while i < length(in)
i = i+1;
if in(i) ~= a
count = 1;
a = in(i);
else
count = count + 1;
end
if count == 2;
out = [out,a];
end
end
disp(out)
  1 件のコメント
Alexander
Alexander 2020 年 2 月 27 日
Thanks for your time
Your code works just fine !
This one works too:
in = [1 1 1 2 2 3 6 6 6 1 1 1 4 4 4 2 2 2 6 4 4];
BB=diff(find(diff(in)~=0));
in(diff(m)==0) = [];
in(find(BB==1)+1)=[];
out = in;

Community Treasure Hunt

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

Start Hunting!

Translated by