How do I find only the small peaks in the signal?
8 views (last 30 days)
Hi, I am currently doing project regarding PPG signal to measure BP. I am not sure why there are unnecessary waves in the signal though I filtered the signal. So is there anyway to find the peaks of my necessary signal alone? The peak of the signal lies less than 50(y value). The PPG signal is the small triangle like wave. Other waves are unnecessary and i want to find the peak of those small triangles alone. Please do help me. Thanks in advance.
John Chilleri on 7 Feb 2017
Edited: John Chilleri on 7 Feb 2017
I would recommend using simple high and low pass filters to acquire the smaller peaks.
In other words, filter out data above and below where they approximately are:
Data = Data(Data > 5);
Data = Data(Data < 25);
Then plot the data, and when it looks like you have isolated the smaller peaks, then simply determine the max of the current values, and that should be the peaks.
ALTERNATIVELY, you can always use the data tool that looks like a blue plus sign with a yellow note, and select the peaks to see their x and y values.
Hope this helps!
Star Strider on 7 Feb 2017
The spikes are artifacts of the sampling process. The only way I know of to get rid of them is to take the absolute value of your signal (so they’re all positive), then use the findpeaks function (returning the indices as the second argument, not the times) to eliminate them by deleting those elements from the signal and time vectors. Then use that signal and time vector and your original time vector to interpolate your signal. That should eliminate most of the spikes. Use that result for your analyses.
Then use findpeaks again to locate your PPG peaks. It has a number of name-value pair arguments that should allow you to identify them reliably, even if there are a few remaining low-amplitude spikes.