2014-09-18 4 views
0

Dans matlab: Je veux trouver la longueur du segment le plus long dans la séquence pour i ∈ {H, E}.Matlab: trouver la longueur de la sous-chaîne la plus longue dans l'ordre

Example: HHHCCEEECCCHHHHCCCCC 
lengh of longest H-segment in sequence is: 4 

Comment est-ce que je devrais faire ceci?

+2

étroitement liées - http://stackoverflow.com/a/6330964/3293881. Ainsi, utilisez ceci pour trouver les occurrences max de 'H' -' max (diff ([0 (find (~ (chaîne == 'H'> 0))) numel (chaîne == 'H') + 1]) - 1) 'et de même pour' E' et prendre le maximum de ces deux. – Divakar

+0

merci. c'est du travail! –

Répondre

3

One-liner avec regexp:

max(cellfun(@numel, regexp(str, '([HE])\1+', 'match'))) 
+0

Ceci est un bon raccourci, pourrait devoir se rétracter le vote dup! +1 – Divakar

+1

Je suis d'accord c'est presque un doublon, mais pas tout à fait. Je ne l'ai pas fermé parce que la séquence a plus de deux valeurs, et la recherche porte sur plus d'une de ces valeurs. Bien sûr, ces différences ne sont pas très significatives, mais pour les débutants, ils pourraient être –

Questions connexes