DSPRelated.com
Forums

A question from Vaidyanathan's "Multirate Systems" book

Started by Rick Lyons December 6, 2004
Rick Lyons wrote:
> On Wed, 8 Dec 2004 16:04:28 -0800, "Bhaskar Thiagarajan" > <bhaskart@my-deja.com> wrote: > > > (snipped) > > >>Hi Rick > > > Hi Bhaskar, > > I haven't been ignoring you, > I've just been pretty busy. > > (snipped) > >>If you see the diagram, >>one branch uses x(n+1) and the other branch uses x(n). >>My method was to apply a z^-1 to both branches. This would result in x(n) >>for the top branch and x(n-1) for the bottom branch. In the end, I think it >>is important to preserve the fact that the top branch leads the bottom by 1 >>unit of delay. > > > Yes Yes Yes! > Darn, ... as you say I was focusing in on only > part of the system instead of looking at the > whole system. > > I wonder why neither Vaidyanathan nor C.-C Hsiao > explained this issue (to guys like me) as > well as you just did. > > >>I'd be glad to answer more questions if you have any - not that I can >>promise I'll have answers but I'll certainly try. > > > Good job Bhaskar! That's *another* beer I owe you! > (I hope you're keeping track.) > > >>Cheers >>Bhaskar > > > Thanks, ... I won't make this mistake again! > [-Rick-] >
Rick, I can't say for sure why it's done that way, but from what I've seen in similar areas: Due to symmetry, the math is often easier to follow using time advances. In other words when deriving the equations it is easier to keep track of what it going on. An example might be something like a filter of Length N. If you're interested in the middle element (predict/smoothing) it is easier to keep track of it as element 0 , rather than N/2 (N even). Other places you might run into similar problems are with foward / backward prediction. Backward prediction seems like an odd thing to do, but because of symmetry the combination of forward/backward prediction produces some very nice results. This often leads to lattice or wave filter construction. BTW - how about a beer for the guy that first responded to your post :) Cheers, David
On Mon, 13 Dec 2004 11:32:44 -0500, David Kirkland <spam@netscape.net>
wrote:

>Rick Lyons wrote: >> On Wed, 8 Dec 2004 16:04:28 -0800, "Bhaskar Thiagarajan" >> <bhaskart@my-deja.com> wrote: >>
(snipped)
>>>If you see the diagram, >>>one branch uses x(n+1) and the other branch uses x(n). >>>My method was to apply a z^-1 to both branches. This would result in x(n) >>>for the top branch and x(n-1) for the bottom branch. In the end, I think it >>>is important to preserve the fact that the top branch leads the bottom by 1 >>>unit of delay. >> >> >> Yes Yes Yes! >> Darn, ... as you say I was focusing in on only >> part of the system instead of looking at the >> whole system. >>
(snipped)
>> >> Good job Bhaskar! That's *another* beer I owe you! >> (I hope you're keeping track.) >> >> >>>Cheers >>>Bhaskar >> >> >> Thanks, ... I won't make this mistake again! >> [-Rick-] >> >Rick, > >I can't say for sure why it's done that way, but from what I've seen in >similar areas:
Hi David,
>Due to symmetry, the math is often easier to follow using time advances. >In other words when deriving the equations it is easier to keep track of >what it going on. An example might be something like a filter of Length >N. If you're interested in the middle element (predict/smoothing) it is >easier to keep track of it as element 0 , rather than N/2 (N even).
Yes, yes. Here's an example of an "advanced time" scenario. If we define some H(m) discrete sequence of desired frequency response values for a filter we're designing, we can obtain the h(n) time-domain impulse response samples by taking the DFT of H(m). If we do so, the center h(n) sample has an "n" time index value of n = 0. That h(n) impulse response would then be a noncausal (zero phase shift) filter which we cannot implement. If we redefine the h(n) index so that the first sample is h(0), now we can implement the filter (it's now causal) but the filter has a time delay of (N-1)/2 samples. The above paragraph is what I think about anytime someone asks, "Why is the delay through an N-tap FIR filter equal to (N-1)/2 instead of N?"
>Other places you might run into similar problems are with foward / >backward prediction. Backward prediction seems like an odd thing to do, >but because of symmetry the combination of forward/backward prediction >produces some very nice results. This often leads to lattice or wave >filter construction. > > >BTW - how about a beer for the guy that first responded to your post :)
Ha. The 1st time I read your 1st response, your idea didn't sink into my head. After reading your 1st response again, I now see just how really sensible it was. Thanks David, and yes I'm formally adding your name to the list of guys whom I owe an adult beverage. Yesterday I bought Bhaskar a bottle of pilsner beer (brewed in Holland) named "Mariner". Because Bhaskar never did show up at my place, I ended up having to drink his beer myself. Today I will buy you a 16-ounce can of Henninger beer (brewed in Stuttgart Germany). Upon returning home I will wait one hour, and if you don't arrive to claim your beer I'll be forced to drink it as well. :-)
>Cheers, >David
Cheers to you & Thanks again, [-Rick-]
Rick Lyons wrote:
> On Mon, 13 Dec 2004 11:32:44 -0500, David Kirkland <spam@netscape.net> > wrote: > > >>Rick Lyons wrote: >> >>>On Wed, 8 Dec 2004 16:04:28 -0800, "Bhaskar Thiagarajan" >>><bhaskart@my-deja.com> wrote: >>> > > (snipped) > > > >>>>If you see the diagram, >>>>one branch uses x(n+1) and the other branch uses x(n). >>>>My method was to apply a z^-1 to both branches. This would result in x(n) >>>>for the top branch and x(n-1) for the bottom branch. In the end, I think it >>>>is important to preserve the fact that the top branch leads the bottom by 1 >>>>unit of delay. >>> >>> >>>Yes Yes Yes! >>>Darn, ... as you say I was focusing in on only >>>part of the system instead of looking at the >>>whole system. >>> > > (snipped) > >>>Good job Bhaskar! That's *another* beer I owe you! >>>(I hope you're keeping track.) >>> >>> >>> >>>>Cheers >>>>Bhaskar >>> >>> >>>Thanks, ... I won't make this mistake again! >>>[-Rick-] >>> >> >>Rick, >> >>I can't say for sure why it's done that way, but from what I've seen in >>similar areas: > > > > Hi David, > > >>Due to symmetry, the math is often easier to follow using time advances. >>In other words when deriving the equations it is easier to keep track of >>what it going on. An example might be something like a filter of Length >>N. If you're interested in the middle element (predict/smoothing) it is >>easier to keep track of it as element 0 , rather than N/2 (N even). > > > Yes, yes. > Here's an example of an "advanced time" scenario. > If we define some H(m) discrete sequence of desired frequency > response values for a filter we're designing, we can > obtain the h(n) time-domain impulse response samples by > taking the DFT of H(m). If we do so, the center > h(n) sample has an "n" time index value of n = 0. > > That h(n) impulse response would then be a noncausal > (zero phase shift) filter which we cannot implement. > If we redefine the h(n) index so that the first sample > is h(0), now we can implement the filter (it's now > causal) but the filter has a time delay of (N-1)/2 samples. > > The above paragraph is what I think about anytime someone > asks, "Why is the delay through an N-tap FIR filter equal to > (N-1)/2 instead of N?" > > >>Other places you might run into similar problems are with foward / >>backward prediction. Backward prediction seems like an odd thing to do, >>but because of symmetry the combination of forward/backward prediction >>produces some very nice results. This often leads to lattice or wave >>filter construction. >> >> >>BTW - how about a beer for the guy that first responded to your post :) > > > Ha. The 1st time I read your 1st response, > your idea didn't sink into my head. > After reading your 1st response again, I now > see just how really sensible it was. > > Thanks David, and yes I'm formally adding your > name to the list of guys whom I owe an adult > beverage. > > Yesterday I bought Bhaskar a bottle of pilsner > beer (brewed in Holland) named "Mariner". > Because Bhaskar never did show up at my place, > I ended up having to drink his beer myself. > Today I will buy you a 16-ounce can of Henninger > beer (brewed in Stuttgart Germany). Upon returning > home I will wait one hour, and if you don't > arrive to claim your beer I'll be forced to drink > it as well. :-) > > >>Cheers, >>David > > > Cheers to you & Thanks again, > [-Rick-] > >
Rick, sorry the first post wasn't as helpful as I would have hoped :(. I admire your taste in beer - although you'd better hope you don't get too much help from this forum :) Cheers, Dave
"Rick Lyons" <r.lyons@_BOGUS_ieee.org> wrote in message
news:41bedb73.165789484@news.sf.sbcglobal.net...
> (snipped) > >> > Yesterday I bought Bhaskar a bottle of pilsner > beer (brewed in Holland) named "Mariner". > Because Bhaskar never did show up at my place, > I ended up having to drink his beer myself. > Today I will buy you a 16-ounce can of Henninger > beer (brewed in Stuttgart Germany). Upon returning > home I will wait one hour, and if you don't > arrive to claim your beer I'll be forced to drink > it as well. :-)
Didn't you know that I prefer Ales over Pilsners?? That's why I didn't show up. BTW, I'm glad my explanation made reasonable sense. Cheers Bhaskar