【发布时间】:2017-10-12 17:49:52
【问题描述】:
我有一组 1 和 0。如何计算连续1的最大个数?
(例如,x = [ 1 1 0 0 1 1 0 0 0 1 0 0 1 1 1 ....])。这里答案是 3,因为 1 连续出现的最大次数是 3。
我正在研究一些搜索和计数内置功能,但是我没有成功。
【问题讨论】:
-
谢谢...我不知道接受的想法:-)
标签: matlab
我有一组 1 和 0。如何计算连续1的最大个数?
(例如,x = [ 1 1 0 0 1 1 0 0 0 1 0 0 1 1 1 ....])。这里答案是 3,因为 1 连续出现的最大次数是 3。
我正在研究一些搜索和计数内置功能,但是我没有成功。
【问题讨论】:
标签: matlab
试试这个:
max( diff( [0 (find( ~ (x > 0) ) ) numel(x) + 1] ) - 1)
【讨论】:
这是一个解决方案,但可能有点矫枉过正:
L = bwlabel(x);
L(L==0) = [];
[~,n] = mode(L)
有时最好用循环编写自己的函数;大多数情况下,它更干净、更快捷。
【讨论】:
另一种可能性:
x = randi([0 1], [1 100]); %# random 0/1 vector
d = diff([0 x 0]);
maxOccurence = max( find(d<0)-find(d>0) )
受an answer 启发,提出了一个类似的问题...
【讨论】:
Cody 问题 15 是在“二进制”字符串中找到最大连续的。 这很好用。如您所知,我对此非常满意! 科迪尺寸 19
max(cellfun(@numel,strsplit(x,'0')));
【讨论】: