How to use wavelet filters for peak finding ECG data
Show older comments
I have a 170 datasets of ECG data that im looking to process for RR peaks and average Waveform shaping. Each dataset is approximatley 2 minutes long, and it all is very noisy and varied. I am interested in finding the peaks but using "findpeaks()" alone is proving insufficient since there are significant noise artificats and human subject variability. I've heard others have used wavelet filters, but im a little stuck with how to use them. Is there an ECG example I can follow to learn which functions are useful for this type of denoising?
As an example when I plot a specific case I see several siginifant large amplitude noise artifacts. The usable ECG data is between ~70 to 75 sec and from 90 seconds to about 120 seconds. Several good peaks have been missed, and several noise peaks have been incorrectly labeled. Furthermore the findpeaks function requires hard coded .6 and .3 values that I wouldnt know apriori. My hope is that wavelet filtering can reduce the number of false positive and false negatives.
Any advice would be appreciated.
ss = 6; ee = 10;
t = dataset{ss,ee}(:,1); %Time Vector
v = dataset{ss,ee}(:,2); %Voltage Vector
[rpk,tpk] = findpeaks(v,t,'MinPeakDistance',.6,'MinPeakHeight',.3);
plot(t,v)
hold on; grid on;
xlabel('Time (sec)');
ylabel('Amplitude (mV)');

2 Comments
Mathieu NOE
on 2 Jun 2022
Accepted Answer
More Answers (0)
Categories
Find more on Wavelet Toolbox 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!
