find same numbers in a row
2 views (last 30 days)
Show older comments
Hello masters of MATLAB,
I am writing a script for a assigement of my study. I have a signal where I have to find places where 30 samples in a row are 0 or 1. The true or false are if the player is higher or lower than the walkingspeed of a player.
How could I find these sports. It is plotted in a line graph with at the x-axis the time and at y-axis the speed of the player.
Can someone help me?
3 Comments
Image Analyst
on 25 Oct 2019
As I showed, you can use regionprops(). But you have not said exactly what you want as the output. What EXACTLY do you want? A vector with only the long stretches in there? The location of the 1's? The location of the starting index of each long stretch? What?????
Answers (2)
Guillermo Rubio Gomez
on 4 Oct 2019
Assuming you have the time vector and the 0 and 1 vectors, to obtain the times corresponding to 0's and 1's:
ceros_time = t(y==0); % Vector with times correponding to 0's in the y vector
ones_time = t(y==1); % Vector with times correponding to 1's in the y vector
0 Comments
Image Analyst
on 4 Oct 2019
You can do this if you have the Image Processing Toolbox:
props = regionprops(yourSignal, 'PixelIdxList', 'Area');
allLengths = [props.Area]; % Get all lengths into a list.
% Extract only where they are 30 long or longer.
goodIndexes = allLengths >= 30;
props = props(goodIndexes);
% Print out where they start and stop
for k = 1 : length(props)
fprintf('Run #%d starts at index %d and stops at index %d', k, props(k).PixelIdxList(1), props(k).PixelIdxList(end))
end
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!