Find values of vector that fall within multiple ranges
Hello, I’m somewhat new to MATLAB, and impressed with how many features it has available. But I’m now stuck and couldn’t find a code sample that worked/helped. I believe the answer is likely trivial, but having trouble putting it together.
Problem: I have a signal with a large number of peaks, however an number of them are just “noise”. There are certain criteria for identifying these peaks, e.g. amplitude, threshold, etc.
% locations of all, indiscriminate peaks
locs(1:3) = [0.1740 2.7050 3.4340] % Peaks amplitude/size at set locations
pks(1:3) = [3.5 4.2 8.9]
There is an additional criteria, that the peaks fall within certain ranges or windows of time. These selected windows are based on the value of another signal.
% These bounding vectors all fit within the time series of the peaks above
% May be a different number of "windows" than the peak location vector
lower_bounds(1:5) = [1.9930 2.8470 3.6940 4.5320 5.3670]
upper_bounds(1:5) = [2.6930 3.5470 4.3940 5.2320 6.0670]
Each peak is only considered to be True if it falls within these bounds. For this trivial example, only locs(3) falls within an acceptable range. The actual vectors are of course much longer. I can’t figure out how to do this in a practical sense. I’d like the output to be a new vector of locations that meet the windows criteria. I’d then like to use these new locations to identify which peaks are to be selected. This last step I imagine is likely a combination of vector indexing, which I can probalby figure out. Any help would be appreciated. I’ve already tried for loops (but got lost in the vector storage and space allocation issues), as well as bounding the location vector between the two bounding vectors (however the sizes aren’t the same, so there becomes an issue).
Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.
loc_is_in_range = any(locs >= lower_bounds(:) & locs <= upper_bounds(:));
This depends upon locs being a row vector (not a column vector). This code should be usable from R2016b onwards; for earlier releases it would have to be modified.