How to normalize and re-sample ECG signal?

52 views (last 30 days)
There is an ECG signal I want to normalize and re-sample at 200Hz. The signal is stored in first row of 16265m.mat
This recording is downloaded from website of PhysioNet . It's length is 10 seconds.

Accepted Answer

Star Strider
Star Strider on 20 Jan 2016
I have no idea what you mean by ‘normalize’. When I looked it up, it seemed relatively noise-free, and the baseline was smooth and not offset. The sampling frequency is 128 Hz, so the easiest way to resample it is to use the Signal Processing Toolbox resample function:
y = resample(x, 200, 128);
The resample function incorporates filtering of the resampled signal, so I prefer it for signal processing.
  4 Comments
Star Strider
Star Strider on 24 Jan 2016
Edited: Star Strider on 25 Jan 2016
My pleasure.
I didn’t say that passband filtering is only appropriate for NSR. A 2-48 Hz passband is only appropriate to NSR (although you can use a 1-100 Hz passband). Quoting from my earlier Comment, ‘Irregular rhythms such as atrial fibrillation/flutter and ventricular tachyarrhythmias require a 1-100 Hz passband’
For bandpass filters, I usually define the passband and stopband as (using the current example):
Fs = 250; % Sampling Frequency
Fn = Fs/2; % Nyquist Frequency
Wp = [2 100]/Fn; % Filter Passband (Normalised)
Ws = Wp .* [0.5 1/0.5]; % Filter Stopband (Normalised)
Then follow the rest of the filter design procedure I linked to in my previous Comment. Either the Butterworth or Chebyshev Type II design will work. For EKGs, because the low frequency cutoff is close to 0, I prefer the Chebyshev with a 1 dB passband ripple and 10 dB stopband ripple. If you have problems getting a stable filter, increase the stopband ripple, perhaps to 25 dB or so.
I haven’t looked that the file you linked to. I only look at those attached to MATLAB Answers posts. Attach it using the ‘paperclip’ icon, and complete both the ‘Choose file’ and ‘Attach file’ steps.

Sign in to comment.

More Answers (1)

Image Analyst
Image Analyst on 20 Jan 2016
I haven't seen the signal, but how about using interp1()?

Community Treasure Hunt

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

Start Hunting!