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関数を見ていましたが、成功しませんでした。
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関数を見ていましたが、成功しませんでした。
はこれを試してみてください:
max(diff([0 (find(~ (x > 0))) numel(x) + 1]) - 1)
はここで解決策だが、それはやり過ぎかもしれません:
L = bwlabel(x);
L(L==0) = [];
[~,n] = mode(L)
は、時にはそれがループを使用して独自の関数を記述する方が良いでしょう。ほとんどの場合、よりクリーンで高速です。
別の可能性:やや類似した質問に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))
...
コーディ問題15は、「バイナリ」の文字列で最大連続なものを見つけることです。 これは非常にうまく動作します。あなたは私がそれにとても満足していると言うことができます! コーディーサイズ19
max(cellfun(@numel,strsplit(x,'0')));
ありがとうございました:私は受け入れの考えについて知りませんでした:-) – discipulus