Uninterrupted segment length?

2 vues (au cours des 30 derniers jours)
Gavin Rumbaugh
Gavin Rumbaugh le 28 Nov 2016
Commenté : Qisq le 27 Avr 2018
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]

Réponse acceptée

bio lim
bio lim le 28 Nov 2016
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

Plus de réponses (1)

Roger Stafford
Roger Stafford le 28 Nov 2016
Modifié(e) : Roger Stafford le 28 Nov 2016
f = find(diff([false,Indexes==2,false])~=0);
output = f(2:2:length(f))-f(1:2:length(f));
  1 commentaire
Qisq
Qisq le 27 Avr 2018
Very elegant solution. Thanks.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Just for fun dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by