how to count array of 1 and 0 repeated times

1 回表示 (過去 30 日間)
Keaton Looper
Keaton Looper 2022 年 3 月 17 日
コメント済み: Image Analyst 2022 年 3 月 18 日
I am tryig to make a counter that will look at a set of data that consists of ones and zeros and count how many times the number 1 is repeated 10 times consecutively and count that occurence as a 1 and any other occurence of a zero or less than 10 times as a zero.

回答 (3 件)

David Hill
David Hill 2022 年 3 月 17 日
a=ones(1,10);
b=[];
for k=1:10
b=[b,randi(2,1,20)-1,a];
end
% above just generates binary series
s=num2str(b);
s=s(s~=' ');
count=length(regexp(s,'[1]{10,}'));

Matt J
Matt J 2022 年 3 月 17 日
編集済み: Matt J 2022 年 3 月 17 日
  18 件のコメント
Keaton Looper
Keaton Looper 2022 年 3 月 18 日
its giving me a count of zero when i know it should not be
Image Analyst
Image Analyst 2022 年 3 月 18 日
I gave an example below where I prove it worked. If it doesn't work for your vector, attach your vector in a text or mat file.

サインインしてコメントする。


Image Analyst
Image Analyst 2022 年 3 月 18 日
編集済み: Image Analyst 2022 年 3 月 18 日
If you have the Image Processing Toolbox, you can use the built-in bwlabel and do it in one line of code. If m is your matrix:
[~, count] = bwlabel(bwareafilt(logical(m), [10, inf]))
  1 件のコメント
Image Analyst
Image Analyst 2022 年 3 月 18 日
Here is an example
m = zeros(1, 1000);
% Make 3 stretches of 10 or more:
m(100:110) = 1;
m(330:380) = 1;
m(560:590) = 1;
[~, count] = bwlabel(bwareafilt(logical(m), [10, inf]))
count = 3

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeCell Arrays についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by