2011-06-13 21 views
8

Mam zestaw 1 i 0. Jak policzyć maksymalną liczbę kolejnych 1s?Policz występowanie kolejnych 1 w danych 0-1 w MATLAB

(Na przykład x = [ 1 1 0 0 1 1 0 0 0 1 0 0 1 1 1 ....]). Tutaj odpowiedź jest 3, ponieważ maksymalna liczba razy 1 występuje kolejno jest 3.

Patrzyłem na niektóre wyszukiwania i liczyć wbudowaną funkcję, jednak nie udało mi się.

+0

Dzięki ... Nie wiedziałem o idei akceptacji :-) – discipulus

Odpowiedz

13

Spróbuj tego:

max(diff([0 (find(~ (x > 0))) numel(x) + 1]) - 1) 
3

Oto rozwiązanie, ale to może być przesada:

L = bwlabel(x); 
L(L==0) = []; 
[~,n] = mode(L) 

Czasami lepiej napisać własną funkcję z pętli; przez większość czasu jest czystszy i szybszy.

1

Inna możliwość:

x = randi([0 1], [1 100]);    %# random 0/1 vector 

d = diff([0 x 0]); 
maxOccurence = max(find(d<0)-find(d>0)) 

która jest inspirowana przez an answer do nieco podobny pytanie ...

0

Cody Problem jest znaleźć maksimum 15 kolejnych z nich w 'binarny' ciąg. To działa całkiem nieźle. Jak możesz stwierdzić, jestem z tego całkiem zadowolony! Cody rozmiar 19

max(cellfun(@numel,strsplit(x,'0'))); 
Powiązane problemy