Counting a groupe of zeros

2 次查看(过去 30 天)
Hello,
I am trying to count a group of zeros with a for loop.
But it keeps giving me the error Index must be a positive integer or logical.
Stops=0;
for i=1:size(TachographVehicleSpeed)
if (TachographvehicleSpeed(i)==0&&TachographvehicleSpeed(i-1)~=0)
Stops = Stops + 1;
end
end

采纳的回答

Image Analyst
Image Analyst 2015-5-5
If you want to count groups of zeros, like the number of groups and number of zeros in each group, you can use regionprops() if you have the Image Processing Toolbox.
m = [1 0 0 0 1 1 0 0 1 0 0 0 0]; % Sample data
[labeledArray, numberOfZeroGroups] = bwlabel(m == 0);
stats = regionprops(labeledArray, 'Area');
zerosInEachGroup = [stats.Area]
Results:
numberOfZeroGroups = 3
zerosInEachGroup =
3 2 4
  2 个评论
Nick van der maat
Thanks ! this works just fine!
Image Analyst
Image Analyst 2015-5-5
You're welcome. If this answers your question best, then maybe you can officially "Accept" the answer and/or vote for it.

请先登录,再进行评论。

更多回答(1 个)

Hooman Habibi
Hooman Habibi 2015-5-5
The index starts from zero so you must start the loop from i=2. you can also count the consecutive zeros in row vector z by the following one liner
numberOfZerosInZ=sum(abs([z 1])+abs([1 z])==0)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by