Low pass filter using filter coefficient

Hi,
I want to do low pass filtering of ECG signal. I have filter coefficients and sammpling frequency. With only this much information available is it possible to do low pass filtering?
please help if someone knows!
Thank you in advance.

2 件のコメント

Star Strider
Star Strider 2021 年 2 月 16 日
Yes.
Fatema Dalal
Fatema Dalal 2021 年 2 月 16 日
Kindly help me with the steps for the same.

サインインしてコメントする。

 採用された回答

Star Strider
Star Strider 2021 年 2 月 16 日

0 投票

If you have the Signal Processing Toolbox, first check the filter stability and performance with the freqz function.
Then use the filtfilt function to filter the signal.
All the necessary code and other details are explained in the documentation.

17 件のコメント

Fatema Dalal
Fatema Dalal 2021 年 2 月 16 日
I am new to matlab. Can you please elaborate the stepsto be performed?
Star Strider
Star Strider 2021 年 2 月 16 日
Upload the filter coefficients, and I will see what I can do.
Fatema Dalal
Fatema Dalal 2021 年 2 月 16 日
Okay.
LPF: 0.0352 -0.0854 -0.1350 0.4599 0.8069 0.3327
HPF: -0.3327 0.8069 -0.4599 -0.1350 0.0854 0.0352
Star Strider
Star Strider 2021 年 2 月 16 日
I assume these are FIR filters.
If so, implement them similarly to the way I implemented them in:
Fs = 1000; % Use The Correct Sampling Frequency
LPF_b = [ 0.0352 -0.0854 -0.1350 0.4599 0.8069 0.3327];
HPF_b = [-0.3327 0.8069 -0.4599 -0.1350 0.0854 0.0352];
figure
freqz(LPF_b,1, 2^14, Fs) % Filter Bode Plot
title(subplot(2,1,1), 'Lowpass FIR Filter')
figure
freqz(HPF_b,1, 2^14, Fs) % Filter Bode Plot
title(subplot(2,1,1), 'Highpass FIR Filter')
EKG_data = rand(1, 1000);
If you want to filter the signal first with the lowpass filter and second with the highpass filter, the filter arguments would be:
LPF_EKG_data = filtfilt(LPF_b,1, EKG_data); % Filter Using Lowpass Filter
HPF_EKG_data = filtfilt(HPF_b,1, LPF_EKG_data); % Filter Using Highpass Filter
With the result of both filters being the output of the highpass filter.
Experiment to get the result you want.
See the documentation for the various funcitons for details on how to use them.
Fatema Dalal
Fatema Dalal 2021 年 2 月 23 日
Thank You for the help. It worked.
Star Strider
Star Strider 2021 年 2 月 23 日
As always, my pleasure!
Fatema Dalal
Fatema Dalal 2021 年 3 月 14 日
Also, I am looking for denoising ECG signal. Kindly help me with that as well.
Star Strider
Star Strider 2021 年 3 月 14 日
A bandpass filter is most appropriate for that, since it will remove baseline variations as well as high-frequency noise. EKG signals have a bandwidth of 0 to 100 Hz, so the filter passband should be 1 Hz to 100 Hz, although for a normal EKG (without arrhythmias or significant variations in the S-T segment), a filter with a passband of 1 to 45 Hz will work. That will also filter out mains frequency (powerline) noise.
Fatema Dalal
Fatema Dalal 2021 年 3 月 15 日
Kindly help me design the filter and also obtain the coefficients for the same.
Star Strider
Star Strider 2021 年 3 月 15 日
The easiest way to do that is to let the bandpass function design it. The digital filter object (with all the necessary information) is the second output of the function. All you need to do is to decide what the upper passband frequency should be, and use 1 Hz for the lower passband frequency.
Fatema Dalal
Fatema Dalal 2021 年 3 月 16 日
Please help me with the coding part. I am using MIT BIH arrhythmia database from physionet.
Star Strider
Star Strider 2021 年 3 月 16 日
If you have the Signal Processing Toolbox, the bandpass function (and related functions) do all the coding for you. They were introduced in R2018a, so if you have an earlier version I can provide you with appropriate code using an elliptic filter. It would be best to try the bandpass function first.
If you do not have the Signal Processing Toolbox, filtering anything is going to be difficult, although not impossible.
Star Strider
Star Strider 2021 年 3 月 16 日
Fatema Dalal’s Aswer is now this Comment —
I do have the singnal processing toolbox. But I dont know how to use it.
Star Strider
Star Strider 2021 年 3 月 16 日
If you have R2018a or later version of it, please read the documentation for the bandpass function that I linked to earlier. It will tell you everything you need to know about how to use the function. If you have an earlier version, I can post equivalent code to design an elliptic filter and filter the signal with it.
Fatema Dalal
Fatema Dalal 2021 年 3 月 16 日
I tried applying the bandpass function and got the filtered signal but filtering isn't helpful. I need to extract r peaks from the signal which isnt possible from the signal obtained even after filtering. I am attaching a screenshot of orignal and filtered signal kindly check if that could help you guide me better.
Also I am attaching the ECG signal file. Kindly check and guide me in the correct direction.
Star Strider
Star Strider 2021 年 3 月 16 日
The easiest way to determine the locations (and amplitudes) of the R-deflections is to use the findpeaks function.
Fatema Dalal
Fatema Dalal 2021 年 3 月 16 日
Yes that is right. But I do not want to use findpeaks function. Instead develop a logic for detecting the R peaks. Hence the need to make R peaks more prominent.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by