2011-06-13 42 views
8

1と0のセットを持っています。連続する1の最大数をどのように数えますか?例えば、x = [ 1 1 0 0 1 1 0 0 0 1 0 0 1 1 1 ....])。ここでは最大回数1が連続して発生するので、答えは3です。MATLABの0-1データで連続する1の発生をカウントします。

私はいくつかの検索とカウントinbuilt関数を見ていましたが、成功しませんでした。

+0

ありがとうございました:私は受け入れの考えについて知りませんでした:-) – discipulus

答えて

13

はこれを試してみてください:

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

はここで解決策だが、それはやり過ぎかもしれません:

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

は、時にはそれがループを使用して独自の関数を記述する方が良いでしょう。ほとんどの場合、よりクリーンで高速です。

1

別の可能性:やや類似した質問にan answerに触発され

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

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

...

0

コーディ問題15は、「バイナリ」の文字列で最大連続なものを見つけることです。 これは非常にうまく動作します。あなたは私がそれにとても満足していると言うことができます! コーディーサイズ19

max(cellfun(@numel,strsplit(x,'0'))); 
関連する問題