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

# Butterworth delay

Started by ●June 15, 2009

Reply by ●June 15, 20092009-06-15

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 > >

Reply by ●June 15, 20092009-06-15

On 15 Jun, 13:43, "Chris_R" <creedrog...@gmail.com> 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.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

Reply by ●June 15, 20092009-06-15

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?

Reply by ●June 15, 20092009-06-15

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. �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?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

Reply by ●June 15, 20092009-06-15

Reply by ●June 15, 20092009-06-15

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

Reply by ●June 15, 20092009-06-15

On Jun 15, 2:01�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