フィルターのクリア

Uninterrupted segment length?

2 ビュー (過去 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.

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

Community Treasure Hunt

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

Start Hunting!

Translated by