Подсчитать вхождение последовательных 1 в 0-1 данных в MATLAB - PullRequest
8 голосов
/ 13 июня 2011

У меня есть набор 1 и 0. Как рассчитать максимальное количество последовательных 1 с?

(например, x = [ 1 1 0 0 1 1 0 0 0 1 0 0 1 1 1 ....]). Здесь ответ равен 3, поскольку максимальное число последовательных повторений 1 равно 3.

Я искал встроенную функцию поиска и подсчета, однако я не увенчался успехом.

Ответы [ 4 ]

13 голосов
/ 13 июня 2011

Попробуйте это:

max( diff( [0 (find( ~ (x > 0) ) ) numel(x) + 1] ) - 1)
3 голосов
/ 13 июня 2011

Вот решение, но оно может быть излишним:

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

Иногда лучше написать собственную функцию с помощью циклов;в большинстве случаев он чище и быстрее.

1 голос
/ 13 июня 2011

Другая возможность:

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

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

, вдохновленный ответом на несколько похожий вопрос ...

0 голосов
/ 12 октября 2017

Коди Задача 15 - найти максимальное количество последовательных в двоичной строке. Это работает довольно хорошо. Как вы можете сказать, я очень доволен этим! Размер Коди 19

max(cellfun(@numel,strsplit(x,'0')));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...