desiging very low band-pass filters (near 0 Hz)

12 views (last 30 days)
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
Wayne King
Wayne King on 28 Nov 2011
What is the sampling frequency of your data?
Honglei Chen
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.

Sign in to comment.

Answers (2)

Daniel Shub
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.

Michael
Michael on 29 Nov 2011
My samp rate is 1k. I'd like to filter the raw signals, but in the Allen reference, they used the inter-beat intervals, which obviously occur much more sparsely. They ultimately create a 10-Hz "waveform" out of their IBI data. I'll try to make one on something with a much lower rate. Thanks everyone.

Tags

Community Treasure Hunt

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

Start Hunting!