"Randy Yates" <
[email protected]> wrote in message
news:
[email protected]..
> "Jaime Andrés Aranguren Cardona" <[email protected]> writes:
>
> > > > 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?
> > >
> > >
> > > 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.
> >
> > This is how I understand it is, too... Don't see the reason for Jim to
say
> > that polyphase only comes into play during interpolation. Could you Jim
> > please explain me your point of view?
>
> I know I'm not Jim, but I see what he was saying. Think of it like
> this. The meat-headed way to do decimation is to compute the
> convolution of the full (non-polyphase) filter and input data at every
> input sample. Then you toss M-1 out of M of those computed
> outputs. The non-polyphase but still-computationally-efficient way is
> to perform a full filter convolution at every Mth input sample but
> using all K*M input samples to do it with, i.e.,
>
> y[n] = sum_{j=0}^{K*M-1} x[n*M - j] * h[j].
>
> (Remember here that the filter length is K*M.)
>
> This method still only takes M*K*Fs multiplies/second but it doesn't
require
> the filter to be partitioned.
>
> > As I see on most diagrams, you have the filter splitted in branches,
each
> > one having a different phase response, thus the term "polyphase", both
in
> > interpolation and decimation filters.
> >
> > I ask too, "Am I wrong?".
>
> It's almost a matter of how you write it. The linear convolution is
>
> y[n] = x[n*M + 0*M - 0] * h[ 0*M + 0] + x[n*M + 0*M - 1] *
h[ 0*M + 1] + ... + x[n*M + 0*M - (M-1)] * h[ 0*M + (M-1)]
> + x[n*M + 1*M - 0] * h[ 1*M + 0] + x[n*M + 1*M - 1] *
h[ 1*M + 1] + ... + x[n*M + 1*M - (M-1)] * h[ 1*M + (M-1)]
> + ...
> + x[n*M + (K-1)*M - 0] * h[(K-1)*M + 0] + x[n*M + (K-1)*M - 1] *
h[(K-1)*M + 1] + ... + x[n*M + (K-1)*M - (M-1)] * h[(K-1)*M + (M-1)]
>
> To get the "polyphase" version just look at this column-wise instead of
row-wise.
Nicely done Randy - good explanation!
Cheers
Bhaskar
> --
> Randy Yates
> Sony Ericsson Mobile Communications
> Research Triangle Park, NC, USA
> [email protected], 919-472-1124