Forums

Polyphase interpolation followed by decimation, do I get original data?

Started by Mr. Ken May 15, 2006
I am using an 80 tap matched filter to interpolate a signal by 10 times,
which splits the coefficients into 10*8taps. After that, I will decimate the
result by 10 using same filter. Do I get back original data (ignore the
delay)?



in article 44692a1e$1@news.starhub.net.sg, Mr. Ken at Mr. Ken@asdf wrote on
05/15/2006 21:27:

> I am using an 80 tap matched filter to interpolate a signal by 10 times, > which splits the coefficients into 10*8taps. After that, I will decimate the > result by 10 using same filter. Do I get back original data (ignore the > delay)?
Yes, IF and only if the interpolation impulse response is or can be represented as a windowed sinc() function where on the zero fractional delay (out of 10 different fractional delays) the coefficients are a single "1" in the middle surrounded by zeros. if it were polynomial interpolation like Lagrange or Hermite, that could be represented as a windowed sinc() function. but B-spline interpolation cannot and your decimated signal will sound or appear like the original but low-pass filtered. -- r b-j rbj@audioimagination.com "Imagination is more important than knowledge."
robert bristow-johnson wrote:
> in article 44692a1e$1@news.starhub.net.sg, Mr. Ken at Mr. Ken@asdf wrote on > 05/15/2006 21:27: > > > I am using an 80 tap matched filter to interpolate a signal by 10 times, > > which splits the coefficients into 10*8taps. After that, I will decimate the > > result by 10 using same filter. Do I get back original data (ignore the > > delay)? > > Yes, IF and only if the interpolation impulse response is or can be > represented as a windowed sinc() function where on the zero fractional delay > (out of 10 different fractional delays) the coefficients are a single "1" in > the middle surrounded by zeros.
I think that criterion you describe is sufficient ("if") but not necessary ("...and only if"). Essentially, you can take any FIR filter design routine that minimizes some error criterion under constraints (the constraint being that there exists at least one sub-phase consisting of a "1" surrounded - not necessarily symmetrically - by zeroes). For example, specify the number of taps = 10*N and phase zero as [1 0 0 ... 0 ]. Now use the remaining 9 N degrees of freedom to minimize the phase (assuming a magnitude constraint), using the differential evolution algorithm. This would be constrained perfect reconstruction minimum-phase interpolation (I like inventing names :-). Regards, Andor
Andor wrote:
> > I think that criterion you describe is sufficient ("if") but not > necessary ("...and only if"). Essentially, you can take any FIR filter > design routine that minimizes some error criterion under constraints > (the constraint being that there exists at least one sub-phase > consisting of a "1" surrounded - not necessarily symmetrically - by > zeroes). > > For example, specify the number of taps = 10*N and phase zero as [1 0 0 > ... 0 ]. Now use the remaining 9 N degrees of freedom to minimize the > phase (assuming a magnitude constraint), using the differential > evolution algorithm.
you're right. the OP *did* say, after all, "ignore the delay".
> This would be constrained perfect reconstruction > minimum-phase interpolation (I like inventing names :-).
dunno about that. i get 3 hits with Google. it's a term that makes sense to me. r b-j
robert bristow-johnson wrote:
> in article 44692a1e$1@news.starhub.net.sg, Mr. Ken at Mr. Ken@asdf wrote on > 05/15/2006 21:27: > > > I am using an 80 tap matched filter to interpolate a signal by 10 times, > > which splits the coefficients into 10*8taps. After that, I will decimate the > > result by 10 using same filter. Do I get back original data (ignore the > > delay)? > > Yes, IF and only if the interpolation impulse response is or can be > represented as a windowed sinc() function where on the zero fractional delay > (out of 10 different fractional delays) the coefficients are a single "1" in > the middle surrounded by zeros.
Since the signal ends up getting filtered twice, wouldn't a FIR of a windowed sinc() with a half-tap delay also produce the original data ignoring delay. In fact, any multiple a half-tap delay in the filter should also work, maybe until the filter kernel gets too asymmetric relative to the precision. IMHO. YMMV. -- rhn A.T nicholson d.0.t C-o-M
"Ron N." <rhnlogic@yahoo.com> wrote in message
news:1147821609.395788.240620@j55g2000cwa.googlegroups.com...
> robert bristow-johnson wrote: > > in article 44692a1e$1@news.starhub.net.sg, Mr. Ken at Mr. Ken@asdf wrote
on
> > 05/15/2006 21:27: > > > > > I am using an 80 tap matched filter to interpolate a signal by 10
times,
> > > which splits the coefficients into 10*8taps. After that, I will
decimate the
> > > result by 10 using same filter. Do I get back original data (ignore
the
> > > delay)? > > > > Yes, IF and only if the interpolation impulse response is or can be > > represented as a windowed sinc() function where on the zero fractional
delay
> > (out of 10 different fractional delays) the coefficients are a single
"1" in
> > the middle surrounded by zeros. > > Since the signal ends up getting filtered twice, wouldn't > a FIR of a windowed sinc() with a half-tap delay also > produce the original data ignoring delay. In fact, any > multiple a half-tap delay in the filter should also work, > maybe until the filter kernel gets too asymmetric relative > to the precision.
Why do you say it gets filtered twice? There is only 1 filter between the interpolation and decimation in a polyphase implementation. Cheers Bhaskar
> > IMHO. YMMV. > -- > rhn A.T nicholson d.0.t C-o-M >
Bhaskar Thiagarajan wrote:
> "Ron N." wrote in message > > robert bristow-johnson wrote: > > > in article 44692a1e$1@news.starhub.net.sg, Mr. Ken at Mr. Ken@asdf wrote > on > > > 05/15/2006 21:27: > > > > > > > I am using an 80 tap matched filter to interpolate a signal by 10 > times, > > > > which splits the coefficients into 10*8taps. After that, I will > decimate the > > > > result by 10 using same filter. Do I get back original data (ignore > the > > > > delay)? > > > > > > Yes, IF and only if the interpolation impulse response is or can be > > > represented as a windowed sinc() function where on the zero fractional > delay > > > (out of 10 different fractional delays) the coefficients are a single > "1" in > > > the middle surrounded by zeros. > > > > Since the signal ends up getting filtered twice, wouldn't > > a FIR of a windowed sinc() with a half-tap delay also > > produce the original data ignoring delay. In fact, any > > multiple a half-tap delay in the filter should also work, > > maybe until the filter kernel gets too asymmetric relative > > to the precision. > > Why do you say it gets filtered twice? There is only 1 filter between the > interpolation and decimation in a polyphase implementation.
Actually, Ron is right. One can view the interpolation / decimation process as an inverse filtering problem. This makes the class of possible interpolation filters even larger than what I described, because all you need is that the interpolation filter has one minium-phase sub-phase. For the reconstruction, you pick that phase from the interpolated data stream and pass it through the inverse filter (which is just 1 / [minium-phase filter] ).