Hi everyone, I searched around and couldnt quite find a problem like this, so sorry if there is a similar post already. In matlab I generate a simple 4th order butterworth filter, code below: [B,A]=butter(4,Wn,'low'); yf=filter(B,A,y); Where 0.0 < Wn < 1.0, with 1.0 corresponding to half the sample rate. My question is ... how do I calculate the delay added by the filter? By delay I mean the extra samples that are added to the beginning of 'yf'. Its been a while since Ive done any filter theory so Im having a difficult time finding answers. Just by eye-balling the difference of 'y' to 'yf' I think the delay = 1/Wn but cannot find any material to support this. So am I wrong? Is there a better way to calculate the delay? Any help is appreciated. Thanks

# delay added by matlab butterworth filter

Started by ●January 22, 2011

Reply by ●January 23, 20112011-01-23

On Jan 23, 3:02=A0am, "whitehat09" <whitehat09@n_o_s_p_a_m.gmail.com> wrote:> Hi everyone, > I searched around and couldnt quite find a problem like this, so sorry if > there is a similar post already. > > In matlab I generate a simple 4th order butterworth filter, code below: > > =A0 =A0 [B,A]=3Dbutter(4,Wn,'low'); > =A0 =A0 yf=3Dfilter(B,A,y); > > Where 0.0 < Wn < 1.0, with 1.0 corresponding to half the sample rate. > > My question is ... how do I calculate the delay added by the filter? By > delay I mean the extra samples that are added to the beginning of 'yf'.There shouldn't be any. If there are, somebody did something wrong. Mind you, the first few samples might be of such low amplitude that you don't notiuce them, in which case you are looking for ways to compute the group delay. Look up a text on DSP on how to actually do the computation. Rune

Reply by ●January 24, 20112011-01-24

>On Jan 23, 3:02=A0am, "whitehat09" <whitehat09@n_o_s_p_a_m.gmail.com> >wrote: >> Hi everyone, >> I searched around and couldnt quite find a problem like this, so sorryif>> there is a similar post already. >> >> In matlab I generate a simple 4th order butterworth filter, code below: >> >> =A0 =A0 [B,A]=3Dbutter(4,Wn,'low'); >> =A0 =A0 yf=3Dfilter(B,A,y); >> >> Where 0.0 < Wn < 1.0, with 1.0 corresponding to half the sample rate. >> >> My question is ... how do I calculate the delay added by the filter? By >> delay I mean the extra samples that are added to the beginning of 'yf'. > >There shouldn't be any. If there are, somebody did something wrong. > >Mind you, the first few samples might be of such low amplitude >that you don't notiuce them, in which case you are looking >for ways to compute the group delay. > >Look up a text on DSP on how to actually do the computation. > >Rune >Hi Rune, Thanks for your reply. If you use the code I listed before there definitely is a delay added to the output, but I have since started using 'filtfilt' instead on 'filter' because filfilt is a zero-phase filter. However I still cannot explain why the samples added to yf from 'filter' is around 1/Wn.

Reply by ●January 24, 20112011-01-24

On Jan 23, 2:44=A0am, Rune Allnor <all...@tele.ntnu.no> wrote:> On Jan 23, 3:02=A0am, "whitehat09" <whitehat09@n_o_s_p_a_m.gmail.com> > wrote: > > > Hi everyone, > > I searched around and couldnt quite find a problem like this, so sorry =if> > there is a similar post already. > > > In matlab I generate a simple 4th order butterworth filter, code below: > > > =A0 =A0 [B,A]=3Dbutter(4,Wn,'low'); > > =A0 =A0 yf=3Dfilter(B,A,y); > > > Where 0.0 < Wn < 1.0, with 1.0 corresponding to half the sample rate. > > > My question is ... how do I calculate the delay added by the filter? By > > delay I mean the extra samples that are added to the beginning of 'yf'. > > There shouldn't be any. If there are, somebody did something wrong. > > Mind you, the first few samples might be of such low amplitude > that you don't notiuce them, in which case you are looking > for ways to compute the group delay. > > Look up a text on DSP on how to actually do the computation. > > RuneRune, Why should there be no delay? The filter has non-linear phase so the impulse response has frequency dependent delay. What am I missing? Dirk

Reply by ●January 24, 20112011-01-24

On Jan 22, 8:02=A0pm, "whitehat09" <whitehat09@n_o_s_p_a_m.gmail.com> wrote:> Hi everyone, > I searched around and couldnt quite find a problem like this, so sorry if > there is a similar post already. > > In matlab I generate a simple 4th order butterworth filter, code below: > > =A0 =A0 [B,A]=3Dbutter(4,Wn,'low'); > =A0 =A0 yf=3Dfilter(B,A,y); > > Where 0.0 < Wn < 1.0, with 1.0 corresponding to half the sample rate. > > My question is ... how do I calculate the delay added by the filter? By > delay I mean the extra samples that are added to the beginning of 'yf'. I=ts> been a while since Ive done any filter theory so Im having a difficult ti=me> finding answers. Just by eye-balling the difference of 'y'=A0to 'yf' I th=ink> the delay =3D 1/Wn but cannot find any material to support this. So am I > wrong? Is there a better way to calculate the delay? Any help is > appreciated. > > ThanksSorry I didn't answer this earlier, but I have been away from my computer the last 4 days. I just ran your code in Matlab and saw no delay in the output, nor did I see extra samples added to the beginning of yf. Waht are you using for 'y'? Maurice Givens

Reply by ●January 24, 20112011-01-24

On Jan 24, 7:28�pm, Dirk Bell <bellda2...@cox.net> wrote:> On Jan 23, 2:44�am, Rune Allnor <all...@tele.ntnu.no> wrote: > > > > > > > On Jan 23, 3:02�am, "whitehat09" <whitehat09@n_o_s_p_a_m.gmail.com> > > wrote: > > > > Hi everyone, > > > I searched around and couldnt quite find a problem like this, so sorry if > > > there is a similar post already. > > > > In matlab I generate a simple 4th order butterworth filter, code below: > > > > � � [B,A]=butter(4,Wn,'low'); > > > � � yf=filter(B,A,y); > > > > Where 0.0 < Wn < 1.0, with 1.0 corresponding to half the sample rate. > > > > My question is ... how do I calculate the delay added by the filter? By > > > delay I mean the extra samples that are added to the beginning of 'yf'. > > > There shouldn't be any. If there are, somebody did something wrong. > > > Mind you, the first few samples might be of such low amplitude > > that you don't notiuce them, in which case you are looking > > for ways to compute the group delay. > > > Look up a text on DSP on how to actually do the computation. > > > Rune > > Rune, > > Why should there be no delay? The filter has non-linear phase so the > impulse response has frequency dependent delay.It has a frequency dependent *group* delay.> What am I missing?That the term 'delay' is ambiguous in the context. It could also mean that there is no response at the output until after a number of samples after the input was excited. Rune