Uninterrupted segment length?

1 回表示 (過去 30 日間)
Gavin Rumbaugh
Gavin Rumbaugh 2016 年 11 月 28 日
コメント済み: Qisq 2018 年 4 月 27 日
Let's say I have an array indexes:
Indexes = [1122221122111211112222222]
How do I get the length of uninterrupted 2s? I want to output to be
output=[ 4 2 1 7]

採用された回答

bio lim
bio lim 2016 年 11 月 28 日
For a number that has longer digits, I am not sure. However, if it is within acceptable number of digits
format long
Indexes = [112222112211121];
newIndexes=str2double(regexp(num2str(Indexes),'\d','match'))
coffee = find(diff([-1 newIndexes -1]) ~= 0);
length = diff(coffee);
output = length(1+(newIndexes(1)==1):2:end);
The output is:
output =
4 2 1

その他の回答 (1 件)

Roger Stafford
Roger Stafford 2016 年 11 月 28 日
編集済み: Roger Stafford 2016 年 11 月 28 日
f = find(diff([false,Indexes==2,false])~=0);
output = f(2:2:length(f))-f(1:2:length(f));
  1 件のコメント
Qisq
Qisq 2018 年 4 月 27 日
Very elegant solution. Thanks.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeJust for fun についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by