View Single Post
  #12 (permalink)  
Old 12-16-2004, 04:36 PM
Randy Yates
Guest
 
Posts: n/a
Default Re: Sample Rate Conversion (Downsampling)

Jim Thomas <[email protected]> writes:

> Jaime Andrés Aranguren Cardona wrote:
> > "Jim Thomas" <[email protected]> escribió en el mensaje
> > news:[email protected]..
> >

>
> >>Jaime Andrés Aranguren Cardona wrote:
> >>
> >>>What else could I try, guys? I'd really appreciate if you can take a

> > look at

>
> >

>
> >>>my code, and help me find out where the mistakes can be, or provide me

> > with

>
> >

>
> >>>some reference C code.
> >>>
> >>>Thanks you very much in advance,
> >>
> >>Did you see Grant's multirate code on dspguru.com?
> >>

> > Hi Jim,

>
> > Yes I did. It is not polyphase, right? I'd love it was... Any
> > example in C

>
> > with ployphase implementation?

>
> The interpolation code on dspguru is most definitely polyphase.
>
> My understanding is that polyphase only comes into play during interpolation.
> It's only during interpolation that you get the opportunity to skip
> through the coefs - essentially choosing a phase of the impulse
> response. In decimation you work on contiguous samples, but only
> calculate the outputs you're going to keep.
>
>
> Am I wrong?


Well, I hate to say wrong because I see exactly where you're coming
from and I like to view it your way, but according to Mitra [1] the
term "polyphase," and the corresponding partitioning of filter
coefficients, can be applied to both interpolators and decimators.

In a polyphase M-fold interpolator, you have M polyphase filter coefficient sets
E_0 through E_{M-1} that each operate at the incoming sample rate. Each are then
upsampled by M, delayed, and then summed. The end result is that, assuming the total
filter length is M*K (so that each polyphase section is K coefficients long),
your computations require M*K*Fs multiplications/second instead of M^2*K*Fs,
where Fs is the input sample rate.

In a polyphase M-fold decimator, you have M polyphase filter coefficient sets
E_0 through E_{M-1} that each operate at the outgoing sample rate. Each section
is fed from an M-fold downsampler. M phases of the input signal are obtained
at the M downsampler outputs by delaying the input of each by a sample. Then
each polyphase section is convolved and the results summed. Again
your computations require M*K*Fs multiplications/second instead of M^2*K*Fs,
where Fs is the output sample rate.
--
Randy Yates
Sony Ericsson Mobile Communications
Research Triangle Park, NC, USA
[email protected], 919-472-1124
Reply With Quote