detecting 6 ones in a vector
Show older comments
i need a code to detect 6 consecutive ones in a vector and their places in the vector
3 Comments
jgg
on 23 Dec 2015
Image Analyst
on 23 Dec 2015
What if there are 10 ones in a row? You could fit 6 in there in a bunch of places. Would you want the only starting index of the run of 10 elements? Would you want all elements that are part of the 10? Or do you just want the 5 starting indices of where a segment of 6 could fit? You need to clarify because these would be three different algorithms.
shimaa ali
on 23 Dec 2015
Accepted Answer
More Answers (1)
Andrei Bobrov
on 23 Dec 2015
Edited: Andrei Bobrov
on 23 Dec 2015
b = A == 1; % A - your array
t = [true;diff(b)~=0];
n = find(t);
p = [n,diff([n;numel(A)+1])];
out1 = p(A(n)==1,:);
out = out1(out1(:,2)==6,:);
or with Image Processing Toolbox
c = regionprops(A(:) == 1,'BoundingBox');
k = cat(1,c.BoundingBox);
out = ceil(k(k(:,4)==6,[2,4]));
Categories
Find more on Matrices and Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!