Interpretation of normalized frequency - magnitude plot and choosing filter for an ECG signal

1 次查看(过去 30 天)
I have a ECG-signal. I want to filter the noise out of it. My sampling frequency is 100 Hz. I have got 1000 samples.
When I plot the single sided magnitude spectrum plot in Hertz, with 1 being 50 Hz (nyquist-freq), I get 2 peaks and one shallow, wide 'noise'. -Peaks of small magnitude but during a wide range of frequency
Take a look at the attached picture
The first peak is from 0 to 0.002 and of magnitude 3.5. The second peak is from 0.515 to 0.525 and of magnitude 0.5. The 'noise' is from 0.002 to 0.4
How do I have to interpret this? Which is the noise that I have to filter out and what kind of filter is appropriate for this system?
I have tried using the Butterworth method applying a filter between 0.515 and 0.525 (second peak) and it looked filtered out. But I don't understand why that works:

回答(1 个)

Star Strider
Star Strider 2016-12-30
Are you absolutely certain that your sampling frequency is 100 Hz?
I’m not.
I looked at the rate and some of the intervals, and a sampling frequency of 256 Hz makes much more sense. That also puts your noise peak spike at about 60 Hz, consistent with U.S. mains power frequency.
Example:
Fs = 256;
InterBeatIntervalMean = (880-130)/(4*Fs)
RateMean = 60/InterBeatIntervalMean % Beats/Min
PR2 = (320-280)/Fs % P-R Interval (Complex #2) (< 200 ms)
QT2 = (370-280)/Fs % Q-T Interval (Complex #2) (< 400 ms)
InterBeatIntervalMean =
732.4219e-003
RateMean =
81.9200e+000
PR2 =
156.2500e-003
QT2 =
351.5625e-003
The normal EKG spectrum is between about 0.5 Hz to 100 Hz to accommodate all EKG arrhythmias (although for a normal EKG, you can use a 50 Hz upper passband frequency).
As for removing the mains frequency noise, see: Remove the 60 Hz Hum from a Signal.
One of my more comprehensive posts on EKG signal processing is Detecting QRS complex in ECG signal. I posted several others.
A filter design I use commonly for de-noising EKG signals is:
Fs = 256; % Sampling Frequency
Fn = Fs/2; % Nyquist Frequency
Wp = [2 95]/Fn; % Filter Passband (Normalised)
Ws = Wp .* [0.5 1.2]; % Filter Stopband (Normalised)
Rp=1;
Rs= 50;
[n,Ws] = cheb2ord(Wp,Ws,Rp,Rs);
[b,a] = cheby2(n, Rs, Ws);
[sos,g] = tf2sos(b,a);
figure(1)
freqz(sos, 1024, Fs)
A Chebyshev Type II IIR (or an FIR) design is preferable for EKG signal processing because of the sharp rolloff required at the low end of the filter passband in order to remove the d-c offset and low-frequency baseline drift. You can do that with a Butterworth design, but that requires a long filter, and long filters can have stability problems.

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by