How to clean this noisy ECG with movement artifact

18 次查看(过去 30 天)
Hi everybody,
I am working on HRV analysis from raw ECG signals, but I came across a signal with many motion artifacts that I absolutely can’t clean up in order to get a valid signal for analysis. In fact from this signal I have then to proceed with the extraction of the peaks R and then to obtain the intervals RR.
The ECG signal is attached where EKG(1,:)=time in ms and EKG(2,:)=ecg signal.
I have already obtained some noise signals but with simple low-pass or high-pass filters I was able to obtain at least acceptable results, but in this case I can not build a suitable filter probably for my inexperience in this area.
If anyone can help me, I’d be very grateful as I need it for a research.
thank you in advance

采纳的回答

Star Strider
Star Strider 2021-12-16
Unforutnately, that is broadband, relatively high-amplitude noise that completely obscures the underlying EKG signal in that part of the record. There is simply no way (that I am aware of) to recover it, without removing essential parts of the EKG itself. If the noise amplitude were lower, so that it did not completely obscure the underlying EKG signal, then it might be possible to recover at least the R-deflections and possibly more, using either wavelet denoising or the Savitzky-Golay filter. However here that is not the situation.
My analysis (done offline since the online Run feature has problems with .mat files) —
LD = load('Siria Fumagalli EKG.mat');
t = LD.EKG(1,:);
EKG = LD.EKG(2,:);
L = numel(t);
Fs = 1/mean(diff(t));
Fn = Fs/2;
NFFT = 2^nextpow2(L);
FTEKG = fft(EKG - mean(EKG), NFFT) / L;
Fv = linspace(0, 1, NFFT/2+1)*Fn;
Iv = 1:numel(Fv);
figure
plot(Fv, abs(FTEKG(Iv))*2)
grid
xlabel('Frequency (Hz)')
ylabel('Amplitude')
xlim([0 15])
EKGFilt = lowpass(EKG, 0.2, Fs, 'ImpulseResponse','iir');
figure
subplot(2,1,1)
plot(t, EKG)
grid
xlabel('t (s)')
ylabel('Amplitude')
subplot(2,1,2)
plot(t, EKGFilt)
grid
xlabel('t (s)')
ylabel('Amplitude')
You have my sympathies.
.
  4 个评论
Siria Fumagalli
Siria Fumagalli 2021-12-22
Thank you
The problem is that I'm using a t-shirt with built-in sensors so is a little more different to do such things, that's why i'm probably going to post other questio :)
Thanks again
Star Strider
Star Strider 2021-12-22
As always, my pleasure!
Thank you very much for the follow-up! I guessed correctly then that this is an electrode problem and not specifically a movement artifact problem. I have not heard of such a T-shirt with electrodes (it would be interesting to have a link or other reference to it, since the instructions that accompany it could suggest a way to minimise these problems), however the solution may be to clean the electrodes thoroughly, clean the skin thoroughly, and tell the patient not to move. (A succinylcholine drip and a ventilator would be the perfect solution to this problem! Not serious, of course, however there have been time in my clinical and research career that I was very much tempted to use that option.)
.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 ECG / EKG 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by