desiging very low band-pass filters (near 0 Hz)
12 views (last 30 days)
Show older comments
I'm trying to compute an estimate of RSA (respiratory sinus arrythmia) for ecg data. I have a series of inter-beat intervals (R-R intervals) and from what I've read, I should 1) upsample the IBI vector for filtering (this is not hard) and 2) bandpass filter the resulting IBI time waveform in the range of 0.12 to 0.40 Hz, to highlight the portion of the IBI that is related to breathing.
For the life of me, I cannot design a filter in Matlab that will give me a good response with these parameters so near the 0 Hz cutoff. Allen et al (2007) claim to use a 241-point FIR filter to do this, but when I try to design even a low-pass FIR filter (e.g., cutoff at 0.5 Hz) using the fdatool or something like kaiserord, it runs forever (and FIR filters for ranges I can design...i.e., for 1 Hz...result in thousands of points).
I suppose I could try an IIR filter and use filtfilt to avoid phase distortions, but I still can't get a frequency response (using freqz) that looks good in that ultra-low range.
How do you design filters with cutoffs so near 0?
I'm running Matlab version 2007b and do not have the f.design function.
Thanks!
2 Comments
Honglei Chen
on 28 Nov 2011
I agree with Wayne, it seems like your sampling frequency is high so it needs a very high order filter. You may want to downsample your data first given you are looking for something so close to DC.
Answers (2)
Daniel Shub
on 29 Nov 2011
You need to make sure that your sample rate matches that of your reference. A higher sample rate will result in a longer filter.
0 Comments
See Also
Categories
Find more on Single-Rate Filters in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!