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