Hi everyone, I'm new to DSP and I have just been recently learning the concepts. And I don't really understand the polyphase filtering. I have to increase the sampling rate by a factor of 8, and I'm doing that in two stages: interpolate by 2 in the first stage, then by 4. I get the basic interpolation process which involves upsampling the signal by a factor of L (inserting zeros in between samples), and lowpass filtering the upsampled version. But we know that's not efficient because L-1 samples are zeros and anything multipled by zero is a 0. Fine. I get this! But what I don't get is the polyphase implementation and noble identities. I have been readig lots of articles online but none of them is really helping. I know polyphase structure divides the filter into L sub-filters, but is this the only thing that it's doing? Do we still insert zeros between samples? And what about noble identies? From what I got, it's changing the order of upsampling and filtering. So it's filtering it first, then upsampling it. But I don't really understand how these two concepts are being used together to efficiently increase the sampling rate. Also, I have been reading that using a halfband filter for interpolation by 2 is efficient because almost half the coefficients are zero. But when implementing it, are we just skipping those zeros? Overall it would be great if someone could give me a small example that covered all these concepts, so I could understand them better. Thank you in advance!
Polyphase structure for interpolation
Started by ●July 18, 2012
Reply by ●July 18, 20122012-07-18
On Wed, 18 Jul 2012 17:31:48 -0500, "Clay" <1@dsprelated> wrote:>Hi everyone, > >I'm new to DSP and I have just been recently learning the concepts. And I >don't really understand the polyphase filtering. > >I have to increase the sampling rate by a factor of 8, and I'm doing that >in two stages: interpolate by 2 in the first stage, then by 4. I get the >basic interpolation process which involves upsampling the signal by a >factor of L (inserting zeros in between samples), and lowpass filtering the >upsampled version. But we know that's not efficient because L-1 samples are >zeros and anything multipled by zero is a 0. Fine. I get this! > >But what I don't get is the polyphase implementation and noble identities. >I have been readig lots of articles online but none of them is really >helping. > >I know polyphase structure divides the filter into L sub-filters, but is >this the only thing that it's doing? Do we still insert zeros between >samples?I think of it as a single filter with L coefficient sets that are just "phases" of a single impulse response that is oversampled by a factor of L with respect to the input rate. From that perspective you do not need to insert zeros between samples.>And what about noble identies? From what I got, it's changing the order of >upsampling and filtering. So it's filtering it first, then upsampling it. >But I don't really understand how these two concepts are being used >together to efficiently increase the sampling rate. > >Also, I have been reading that using a halfband filter for interpolation by >2 is efficient because almost half the coefficients are zero. But when >implementing it, are we just skipping those zeros?You can always skip an operation that multiplies anything by zero when the result is to be summed with another quantity.>Overall it would be great if someone could give me a small example that >covered all these concepts, so I could understand them better. > > >Thank you in advance! > >Eric Jacobsen Anchor Hill Communications www.anchorhill.com
Reply by ●July 19, 20122012-07-19
Hello, for example, a polyphase filter that interpolates by 4 has 4 sets of coefficients but only one delay line. It gives 4 output samples per input sample: - output sample 1 using coefficient set 1 - output sample 2 using coefficient set 2 - output sample 3 using coefficient set 3 - output sample 4 using coefficient set 4 - then shift a new input sample into the delay line and start all over. You design a FIR filter at the high (output rate). Then, the first coefficient set is taken from impulse response positions [1, 5, 9, 13, ..]. The second coefficient set is taken from positions [2, 6, 10, 14, ..] and so on. It's exactly the same as inserting 3 samples after each input sample, and then filtering with the original FIR filter. The Noble identities may be (IMHO) more confusing than useful, as they give an abstract explanation for something that is immediately obvious if I look at it for a while.
Reply by ●July 19, 20122012-07-19
Powerpoint about polyphase filters http://www.ee.ic.ac.uk/hp/staff/dmb/courses/DSPDF/01200_Polyphase.pdf MATLAB demo http://www.dsplog.com/2007/05/12/polyphase-filters-for-interpolation/
Reply by ●July 19, 20122012-07-19
note that the above course notes describe a filter that has equal input- and output rate. This is quite a bit more complicated than a plain polyphase interpolator. The term 'phase' refers to a time-delayed replica of the signal. A 'poly'phase filter simply means that several 'phases' are computed in parallel, What I'm calling a 'polyphase' interpolator is referred to as 'commutator' in the slides ('upsampler implementation').
Reply by ●August 9, 20122012-08-09
>Hello, > >for example, a polyphase filter that interpolates by 4 has 4 sets of >coefficients but only one delay line. It gives 4 output samples per input >sample: > >- output sample 1 using coefficient set 1 >- output sample 2 using coefficient set 2 >- output sample 3 using coefficient set 3 >- output sample 4 using coefficient set 4 >- then shift a new input sample into the delay line and start all over. > >You design a FIR filter at the high (output rate). >Then, the first coefficient set is taken from impulse response positions >[1, 5, 9, 13, ..]. The second coefficient set is taken from positions [2, >6, 10, 14, ..] and so on. > >It's exactly the same as inserting 3 samples after each input sample, and >then filtering with the original FIR filter. > >The Noble identities may be (IMHO) more confusing than useful, as theygive>an abstract explanation for something that is immediately obvious if Ilook>at it for a while. >Hi, Thanks everyone for the answers. I finally get how polyphase filters work, but I still don't understand how Noble identities work. From the explanations online, it's basically reversing the order of upsampling and filtering so we can operate at the lower rate. But I thought using the polyphase filtering was actually eliminating the upsampling part by combining the two stages(because we aren't actually inserting zeros between samples since it's inefficient). So why does it even matter that we reverse the order? Thanks
Reply by ●August 10, 20122012-08-10
Hello, reading your original question: Here is a somewhat lengthy design example that includes interpolation by 2 and by 4 in the final stages. http://www.dsprelated.com/showarticle/156.php I wouldn't use Noble identities to explain a FIR polyphase interpolator, it's too abstract IMHO. Instead (short version): If I upsample and filter by n, there will be (n-1) zero samples for each non-zero sample at the input of the filter. This stream is shifted through the delay line one step per output sample. If I keep track on which samples in the delay line are non-zero, I can omit (n-1) out of n FIR taps, as their output contribution must be zero. All it takes is a simple state machine that keeps track on where the non-zero samples are. Which is a counter that wraps at n: if counter == 0 then use first coefficient bank if counter == 1 then use second coefficient bank .. and counter = n wraps around to counter = 0.