Forums

Butterworth delay

Started by Chris_R June 15, 2009
Increases in analog filter order for a Butterworth filter increases its
delay, correct?  I've heard of methods for making up for the delay incurred
- sometimes referred to as running the filter both backwards and forwards.

Can anyone with practical experience in this domain shed some light on the
subject?

Thanks,
Chris



Chris_R wrote:

> Increases in analog filter order for a Butterworth filter increases its > delay, correct? I've heard of methods for making up for the delay incurred > - sometimes referred to as running the filter both backwards and forwards. > > Can anyone with practical experience in this domain shed some light on the > subject? > > Thanks, > Chris > >
On 15 Jun, 13:43, "Chris_R" <creedrog...@gmail.com> wrote:
> Increases in analog filter order for a Butterworth filter increases its > delay, correct? &#2013266080;I've heard of methods for making up for the delay incurred > - sometimes referred to as running the filter both backwards and forwards.
Define 'delay'. There are at least three different concepts at work here: - Phase distortion due to non-linear phase responses of the filter. - Latency, caused by the time it takes for a DSP device to actually do the necessary computations. - On/Off-line processing. There are certain things that are possible if you have all the data available up front, that are not possible if you process an ongoing stream of data. So describe the data flow in as exact detail as possible, and you might recieve useful answers. Rune
Rune,

Suppose I have an accelerometer whose data I am recording as it is
attached to a shaker table or otherwise moved about.  Let's also suppose
that the data acquistion software that I have offers pre-filtering in the
form of an 8 pole Butterworth filter.

It's my understanding that Butterworth filter "delay" increases as a
function of filter order.  For example, I have created Butterworth filters
in Matlab using butter() or buttap() and then plotted the response using
both bode() and step() and I noticed that the phase response was
increasingly negative and that this had a correlation with an increase in
time delay to the step function for step response.  When I use the term
'delay' I'm thinking of the time domain response of the data due to the
filter.

In the above-described situation, I imagine that if the 8 pole Butterworth
filter incurred a delay of 10 msec (to make it easy) at a given range of
frequencies, then accelerometer events at those frequencies would see the
data be recorded at time_event + critical_path_delay_DAS + 10 msec.

Is that correct?
On 15 Jun, 20:01, "Chris_R" <creedrog...@gmail.com> wrote:
> Rune, > > Suppose I have an accelerometer whose data I am recording as it is > attached to a shaker table or otherwise moved about. &#2013266080;Let's also suppose > that the data acquistion software that I have offers pre-filtering in the > form of an 8 pole Butterworth filter. > > It's my understanding that Butterworth filter "delay" increases as a > function of filter order. &#2013266080;For example, I have created Butterworth filters > in Matlab using butter() or buttap() and then plotted the response using > both bode() and step() and I noticed that the phase response was > increasingly negative and that this had a correlation with an increase in > time delay to the step function for step response. &#2013266080;When I use the term > 'delay' I'm thinking of the time domain response of the data due to the > filter. > > In the above-described situation, I imagine that if the 8 pole Butterworth > filter incurred a delay of 10 msec (to make it easy) at a given range of > frequencies, then accelerometer events at those frequencies would see the > data be recorded at time_event + critical_path_delay_DAS + 10 msec. > > Is that correct?
The time delay you look at is what is known as 'group delay.' And you are correct in that this has to do with the phase response of the filter. Since you do off-line filtering (you record all the data before you start processing them), you can compensate the delay by runing the data backwards through the filter. This will give you a 0-phase filter. Just be aware that this filter is non-causal, so you might see responses at times before the shaker table starts. You have a choise: Either proceed with the delayed causal data, or use non-delayed but noncausal data. Rune
Excellent.

Thank you, Rune.
On Mon, 15 Jun 2009 09:30:38 -0500, Vladimir Vassilevsky
<antispam_bogus@hotmail.com> wrote in comp.dsp:

*plonk*
On Jun 15, 2:01&#2013266080;pm, "Chris_R" <creedrog...@gmail.com> wrote:
> > In the above-described situation, I imagine that if the 8 pole Butterworth > filter incurred a delay of 10 msec (to make it easy) at a given range of > frequencies, then accelerometer events at those frequencies would see the > data be recorded at time_event + critical_path_delay_DAS + 10 msec. > > Is that correct?
The delay of a Butterworth is not constant for all frequencies. If you want that, you gotta do what Rune confirmed (they used to call that operation "filtfilt") to the data file. Even though not perfectly constant, for frequencies well below the Butterworth corner frequency, the delay of a Butterworth is reasonably constant. Not as constant as a Bessel filter but better than an Elliptic filter. The group and phase delay at these low frequencies is nearly the same as at DC. r b-j