Need help to removing motion artifact from ECG signal

22 views (last 30 days)
Hello Expert,
I have 4 channel ECG signal. Ecg is recored while the person is walking. So ECG have motion artifact. I need your advice..
1-Which filter use to remove motion artifact from the signal?
2- How to campare filtered and unfiltered signal?
Please see the attached data file.
I am looking positive for your reponse.
Take care

Accepted Answer

Star Strider
Star Strider on 21 May 2023
Try something like this —
LD = load('test10_00wm.mat')
LD = struct with fields:
val: [4×4000 double]
type('ECG.m') % I was hoping That The 'ECG.m' File Had A Sampling Frequency
ECG = val';
val = LD.val.'; % Transpose
Fs = 1;
L = size(val,1);
t = linspace(0, L-1, L)/Fs;
figure
tiledlayout(size(val,2),1)
for k = 1:size(val,2)
nexttile
plot(t, val(:,k))
grid
end
sgtitle('Original')
xlabel('Time (units)')
Fn = Fs/2;
NFFT = 2^nextpow2(L);
FTval = fft((val-mean(val)).*hann(L), NFFT)/L;
Fv = linspace(0, 1, NFFT/2+1)*Fn;
Iv = 1:numel(Fv);
figure
tiledlayout(size(val,2),1)
for k = 1:size(val,2)
nexttile
plot(Fv, abs(FTval(Iv,k))*2)
grid
xlim([0 Fs*0.1])
end
xlabel('Frequency (cycles/(time unit))')
val_filt = highpass(val, 0.001*Fs, Fs, 'ImpulseResponse','iir');
figure
tiledlayout(size(val,2),1)
for k = 1:size(val_filt,2)
nexttile
plot(t, val(:,k))
grid
end
sgtitle('Filtered')
xlabel('Time (units)')
figure
tiledlayout(size(val,2),1)
for k = 1:size(val_filt,2)
nexttile
plot(t, val(:,k))
grid
xlim([0 1000])
end
sgtitle('Filtered (Detail)')
xlabel('Time (units)')
The isoelectric reference in an EKG recording is defined as the value of the P-R interval. By that standard, there is not much baseline drift in columns 2-4, however a highpass filter eliminates what llitle baseline drift there may be.
The rhythm in all appears to be regular, however without an accurate time base, I cannot estimate the rate or measure the intervals. I assume normal sinus rhythim in all the columns, however I cannot see the P-deflections in any of them. Column 1 appears to be bad lead placement, although I cannot rule out significant pathology (possibly hyperkalemia, however a clinical correlation would be necessary). Columns 2 & 3 appear to be normal, although the P deflection appears to be absent in both and the T-deflection also absent in column 3. Column 4 has what appears to be significant S-T depression, likely due to ischaemia, although drug effects cannot be ruled out.
Clinical Impression: Column 1 needs to be re-recorded, column 4 could have significant pathology and needs urgent clinical follow-up.
.
  11 Comments

Sign in to comment.

More Answers (0)

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!