MATLAB: How to find an exact sequence of values

arrayImage Processing ToolboxmatchingMATLAB

Hi everyone,
as the title says I'm looking to find an exact sequence of values in a matrix. I have a matrix that I'm turning into a logical array as below. Now I want to be able to say if the consecutive ones in the column are less than X (as in e – see below) they should also be turned into zeroes as well.
I tried to work with find(contain()) but that did nothing. Also ismember() did not turn out the results I was looking for.
Turning matrix into binary representation
for k = 1:1:size(p,1)
for l = 1:1:(size(p,2))
if p(k,l) > z
p(k,l) = 1;
else
p(k,l) = 0;
end
end
end
Logical array
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0
0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0
0 0 1 0 1 1 1 0 0 0 0 1 0 0 0 0
0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0
0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0
0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0
0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0
0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1
Size of ones I would like to be able to filter
e = ones(x,1)
Thank you for your help everyone! It's greatly appreciated.
Cheers,
Peter

Best Answer

Try Loren's findpattern2. Here is link:
create vector x numbers of ones and run findpattern2.
e = ones(1,x);
for i = 1:size(LogicalArray,2)
indices = findpattern2(LogicalArray(:,i),e);
if ~isempty(indices) % if it finds x elements of this pattern make them zero.
for k=1:numel(indices)
LogicalArray(indices(k):indices(k)+x,i) = false; % from indice to pattern length will be zero
end
end
end