You are now following this question
- You will see updates in your followed content feed.
- You may receive emails, depending on your communication preferences.
Low pass filter using filter coefficient
5 views (last 30 days)
Show older comments
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 Comments
Fatema Dalal
on 16 Feb 2021
Kindly help me with the steps for the same.
Accepted Answer
Star Strider
on 16 Feb 2021
17 Comments
Fatema Dalal
on 16 Feb 2021
I am new to matlab. Can you please elaborate the stepsto be performed?
Star Strider
on 16 Feb 2021
Upload the filter coefficients, and I will see what I can do.
Fatema Dalal
on 16 Feb 2021
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
on 16 Feb 2021
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
on 23 Feb 2021
Thank You for the help. It worked.
Star Strider
on 23 Feb 2021
As always, my pleasure!
Fatema Dalal
on 14 Mar 2021
Also, I am looking for denoising ECG signal. Kindly help me with that as well.
Star Strider
on 14 Mar 2021
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
on 15 Mar 2021
Kindly help me design the filter and also obtain the coefficients for the same.
Star Strider
on 15 Mar 2021
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
on 16 Mar 2021
Please help me with the coding part. I am using MIT BIH arrhythmia database from physionet.
Star Strider
on 16 Mar 2021
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
on 16 Mar 2021
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
on 16 Mar 2021
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
on 16 Mar 2021
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
on 16 Mar 2021
The easiest way to determine the locations (and amplitudes) of the R-deflections is to use the findpeaks function.
Fatema Dalal
on 16 Mar 2021
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.
More Answers (0)
See Also
Categories
Find more on Digital Filtering in Help Center and File Exchange
Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!An Error Occurred
Unable to complete the action because of changes made to the page. Reload the page to see its updated state.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)