Identify the duration of zero values and count the number of such zero regions
2 views (last 30 days)
Show older comments

Hello,
I have a signal shown above.
- First I want to identify the duration(length) of each zero valued regions represented as T, T1, T2, T3 etc., (You may generate any signal with zeroed region similar to my graph)
- Count how many such zero valued regions are there in 1 sec(or within a specified time).
Any help interms of code is well appreciated. Thank you in advance.
0 Comments
Accepted Answer
Davide Masiello
on 1 Dec 2022
Edited: Davide Masiello
on 1 Dec 2022
Use regionprops
time = 0:100;
signal = rand(size(time));
signal([3:6,15:21,43:55,61:64,87:92]) = 0;
plot(time,signal)
r = regionprops(signal==0,"SubarrayIdx");
for k = 1:length(r)
time_indexes = r(k).SubarrayIdx{2};
durations(k) = time(time_indexes(end))-time(time_indexes(1));
end
durations
Obviously, the number of zero regions is the length of the array durations.
3 Comments
Image Analyst
on 1 Dec 2022
Or, more simply
zeroRegions = (signal == 0); % Identify elements that are exactly 0.
% Throw out runs less than, say, 3 elements long.
zeroRegions = bwareaopen(zeroRegions, 3);
% Measure what's left (regions 3 or more elements long).
r = regionprops(zeroRegions,"Area");
durations = [r.Area] % Extract all run lengths from structure into vector.
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!