Post

Polyphase Implementation and Noble Identities

## Sample Rate Conversion by Rational Factor $L/M$

Polyphase Implementation and Noble Identities

Sample Rate Conversion by Rational Factor $L/M$

Cascade: Interpolate by $L$ → Decimate by $M$

1
x[n] ──► [↑L] ──► [LPF: cutoff = min(π/L, π/M)] ──► [↓M] ──► y[n]

Single filter combines anti-imaging and anti-aliasing. Cutoff = $\min(\pi/L, \pi/M)$.

Example: Convert 44.1 kHz → 48 kHz

Ratio: $48000/44100 = 160/147$ → $L=160, M=147$

  • Up-sample by 160
  • Filter at $\pi/160$
  • Down-sample by 147

Polyphase Implementation (Efficient)

Instead of filtering then decimating (wasting computations), filter in polyphase branches:

Decimation Polyphase

Decompose filter $H(z) = \sum_{k=0}^{M-1} z^{-k} E_k(z^M)$

1
2
3
4
x[n] ──► E_0(z^M) ──► ↓M ──► y[n]
       E_1(z^M) ──► ↓M ──►
       ...
       E_{M-1}(z^M) ──► ↓M ──►

Only compute outputs that are kept! $M$-fold reduction in multiplies.

Interpolation Polyphase

Decompose $H(z) = \sum_{k=0}^{L-1} z^{-k} R_k(z^L)$

1
2
3
4
        R_0(z^L) ──►
        R_1(z^L) ──►     → y[n]
        ...          ↑L
        R_{L-1}(z^L) ──►

Filter branches run at lower rate → efficient!


Noble Identities

IdentityDescription
Noble 1Filter → Decimate = Decimate → Polyphase filter
Noble 2Interpolate → Filter = Polyphase filter → Interpolate

These allow moving rate changes across filters for efficiency.


This post is licensed under CC BY 4.0 by the author.