ECG spectrum wrong?

4 次查看(过去 30 天)
Hi all,
I have a question about an EKG spectrum.
Someone gave me this ECG spectrum for an exercise.
I'm not sure but the spectrum looks weird.
You clearly see a 50 Hz tone and its harmonics.
The whole thing looks like a modulation.
I would say there was no anti aliasing filter used.
Or does an ECG spectrum with 50 Hz + harmonics look like that?
Thanks for the help.
Best Regards.

采纳的回答

Daniel M
Daniel M 2019-10-27
I'd say it looks fairly normal once you notch filter the line noise. But there is other preprocessing to do, like a low pass filter. You would probably get a lot out of this article <https://www.ncbi.nlm.nih.gov/m/pubmed/20851409/>

更多回答(3 个)

Daniel M
Daniel M 2019-10-29
I'm not sure how you're doing your notch filters, but try this:
Fs = 625; % or whatever your sampling frequency is.
Fn = Fs/2; % Nyquist frequency
numHarmonics = 4; % Let's do 50, 100, 150, 200, 250
lineFreq = 50; % Hz
for fq = ((0:numHarmonics)+1) * lineFreq
Fl = fq + [-1, 1]; % notch around Fl. Could try [-2, 2] if too tight
[z,p,k] = butter(6, Fl/Fn, 'stop');
sos = zp2sos(z,p,k);
data = filtfilt(sos, 1, data); % assumes data is [time x ... dimensions]
% overwrites data, and filters sequentially for each notch
end
  1 个评论
Stephan Lallinger
Stephan Lallinger 2019-11-1
Thank you for your code.
I tested several preprocessing steps last week.
Now iam using an IIR highpass and FIR lowpass (0.05 Hz - 150 Hz).
For power line noise i tried a comb notch filter.
I will test your code also, thank you for that!

请先登录,再进行评论。


Stephan Lallinger
Stephan Lallinger 2019-10-29
Thank you for your help.
Now i'am using an IIR HPF and a FIR LPF.
Iam not happy with the notch filters. Now i try to implement an adaptive filter for line noise.
Thank you!

Stephan Lallinger
Stephan Lallinger 2019-11-1
Hi,
sorry again i got a question again about preprocessing.
For simplicity, an ECG with a noise at only 50 Hz.
In my picture you can see that the Notch filter distorts the ECG in the QRS complex.
I use a 150 Hz low pass filter, with a lower cut-off frequency I get the error off, but I want to stay at 150 Hz.
Here's the notch I use:
%%noise to filter
f_noise = 50;
%%normalize frequency
f_notch = f_noise/fs;
%%place zeros
N =[exp(j*2*pi*f_notch);exp(-j*2*pi*f_notch)];
%%place poles with same angular as zeros
%%distance to unit circle
P = 0.5*N;
%get coefficients
b = poly(N); a = poly(P);
Is there a technique to reduce this afterswing, except for a lower cutoff frequency of the low-pass filter?
I can imagine it is due to the phase response and the associated group delay.
Best regards.
  4 个评论
Daniel M
Daniel M 2019-11-2
Ok good idea to open a new question. I will look out for it, and see if others can give advice too. In the meantime, think you could post your data here? I'd like to tinker with it a bit.
Stephan Lallinger
Stephan Lallinger 2019-11-2
编辑:Stephan Lallinger 2019-11-4
Of couse i can it is excel. I hope this is fine.
fs = 500 Hz;
for reading i use:
ecg_signal = xlsread( 'mySigXx.xlsx');
First signal contains 50 Hz + harmonics.
Second signal is with the ringing effect when notch is used.
EDIT: for second signal you need to add 50 Hz noise.
I do it like this
fs = 500;
Ts = 1/fs;
t=0:1:length(ecg_signal)-1; %time vector depending on ecg signal
t = t/fs; %normalize time vector
ecg_signal = ecg_signal' + 0.5*sin(2*pi*50*t); % add Noise

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Spectral Measurements 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by