Clear Filters
Clear Filters

please help in this program. is to find the index of zeros which is in consecutive order which should more or equal to 5 time.

1 view (last 30 days)
a=[0,0,0,0,0,0,0,0,9,8,5,6,0,0,0,0,0,0,3,4,6,8,0,0,9,8,4,0,0,7,8,9,5,0,0,0,0,0,8,9,0,5,8,7,0,0,0,0,0]; [x,y]=size(a);
for i=0:y i+1; k=1; l=0; n=i; count=0;
while (a==0)
count+1;
break;
n+1;
end
if(count>=5)
v([]);
for l=k:l<n
v(m)=l+1;
m+1;
end
end
count=1;
i=n;
end
for i=o:i<m
i+1;
fprintf('index of continous zero more than 5 or equal=%d',v(i));
end

Accepted Answer

Image Analyst
Image Analyst on 21 May 2014
It's trivial if you have the Image Processing Toolbox:
a = [0,0,0,0,0,0,0,0,9,8,5,6,0,0,0,0,0,0,3,4,6,8,0,0,9,8,4,0,0,7,8,9,5,0,0,0,0,0,8,9,0,5,8,7,0,0,0,0,0];
% Measure lengths of all "0" regions.
measurements = regionprops(a == 0, 'Area', 'PixelIdxList');
% Get indexes of those regions that are >= 5 in length.
fiveLongRegions = find([measurements.Area] >= 5)
theIndexes = vertcat(measurements(fiveLongRegions).PixelIdxList)
% Get a logical output vector which is true if it's in a >=5 region.
output = false(1, length(a)); % Initialize
% Set elements = 1 if it's in a >=5 region.
output(theIndexes) = true

More Answers (1)

María
María on 21 May 2014
Edited: María on 21 May 2014
I don't know if this is what you men:
a=[0,0,0,0,0,0,0,0,9,8,5,6,0,0,0,0,0,0,3,4,6,8,0,0,9,8,4,0,0,7,8,9,5,0,0,0,0,0,8,9,0,5,8,7,0,0,0,0,0]; [x,y]=size(a); cont=0; v=[];
for i=1:y
if a(i)==0
cont=cont+1;
else
if cont>=5
v=[v,i-cont]
end
cont=0;
end
end
if cont>=5
v=[v,i-cont]
end
for i=1:length(v)
fprintf('index of continous zero more than 5 or equal=%d',v(i)); end

Categories

Find more on Resizing and Reshaping Matrices 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!