数字信号处理之多相滤波器 (7)

多相滤波器 (polyphase filter)

单纯地抽样和插值均会产生混叠,必须和低通滤波器配合使用,这是多相滤波器产生的基础。

1 抽样滤波器

根据前一节的知识,\(M\)-Fold Decimation 只有在原始信号是 “Mth Band signal” 的情况下才不会有混叠 (aliasing)

如何保证这一点呢 ?? — M-Band low pass filter 将频域限制在区间 \([-\pi/M, \pi/M]\)

如下图所示,先经过低通滤波器 \(h[n]\) ,然后 \(M\) 点降采样

问题来了,先低通滤波再降采样,以及先降采样再低通滤波,二者是否相同呢?

回答是对又不全对,原因是低通滤波器不同,但位置可以调换。

证明如下:

证明1:时域证明

  • 先降采样,再低通滤波
    \[
    \begin {align}
    y(n) &= w[n] \ast h[n] = \sum_{k} h[k] w[n-k] \\
    &= \sum_{k} h[k]x[(n-k)M]
    \end {align}
    \]

  • 先低通滤波,再降采样
    \[
    g[n] = h_{(\uparrow M)} [n] =
    \begin{cases}
    h[n/M], &\text {if} \; n/M = \text {integer} \\
    0, & \text {otherwise}
    \end{cases}
    \]

因此: \[
\begin {align}
v[n] &= x[n] \ast g[n] = \sum_{l} g[l] x[n-l] \\
&= \sum_{k} h[k]x[n-kM]
\end {align}
\]
于是: \[
y[n] = v[nM] = \sum_{k} h[k]x[(n-k)M]
\]
证明2:\(z\) 域证明

  • 对于上面的第二种方式,先低通滤波,再降采样
    于是: \[
    \begin {align}
    Y^z(z) &= { V^z(z) }_{(\downarrow M)} \\
    &= \cfrac {1} {M} \sum_{m=0}^{M-1} V^z(z^{1/M} W_M^{-m}) \\
    &= \cfrac {1} {M} \sum_{m=0}^{M-1} X^z(z^{1/M} W_M^{-m}) H^z((z^{1/M} W_M^{-m})^M)
    \end {align}
    \]
    注意到 : \[
    (z^{1/M} W_M^{-m})^M = z W_M^{-mM} = z e^{-j 2\pi m} = z
    \]
    于是: \[
    Y^z(z) = H^z(z) [ \cfrac {1} {M} \sum{m=0}^{M-1} X^z(z^{1/M} W_M^{-m})] = H^z(z) { X^z(z) }{(\downarrow M)}
    \]

  • 先降采样,再滤波
    \[
    \begin {align}
    Y^z(z) &=\cfrac {1} {M} \sum_{m=0}^{M-1} X^z(z^{1/M} W_M^{-m}) H^z(z) \\
    &= H^z(z) [ \cfrac {1} {M} \sum_{m=0}^{M-1} X^z(z^{1/M} W_M^{-m})] \\
    &= H^z(z) \{ X^z(z) \}_{(\downarrow M)}
    \end {align}
    \]

2 插值滤波器

同样对于 \(L\) 点插值,我们将原先频域的 \([-\pi, \pi]\) 信号压缩到 \([-\pi/L, \pi/L]\), 显然我们也要用低通滤波器滤波,只保留 \([-\pi/L, \pi/L]\) 区间的信号,这样在时域看起来,我们就和用更高频率采集是相同的效果

如下图所示,得到 \(L\) 点的插值信号后,我们必须要用低通滤波器,否则会有混叠

还是问相同的问题,先插值再滤波,以及先滤波再插值,是否相同 ?

这里只给出 \(z\) 域证明

  • 先滤波再插值
    \[
    W^z(z) = X^z(z) H^z(z)
    \]
    于是: \[
    Y^z(z) = W^z_{(\uparrow L)} (z) = W^z(z^L) \\
    = X^z(z^L) H^z(z^L)
    \]

  • 先插值再滤波
    \[
    V^z(z) = X^z_{(\uparrow L)} (z) = X^z(z^L)
    \]

    于是: \[
    Y^z(z) = V^z(z) H^z(z^L) = X^z(z^L) H^z(z^L)
    \]

3 多相抽样滤波器

对于前面的先滤波再降采样,在时域表示为: \[
y[n] = \sum_{i} h[i] x[nM-i]
\]
我们这里使用一个小技巧 (trick) – block form . 其中 \(M\) 为 block size

\[
i = i'M + m =
\begin{cases}
i'= \text {integer} \\
0 \le m \le M-1
\end{cases}
\]
于是: \[
\begin {align}
y(n) &=\sum_{i} h[i] x[nM-i] \\
&= \sum_{i'} \sum_{m=0}^{M-1} h[i'M+m] x[nM-i'M-m] \\
&= \sum_{m=0}^{M-1} \sum_{i'} h[i'M+m] x[nM-i'M-m]
\end {align}
\]

\(p_m[i’] = h[i’M+m]\) ,其中 \(0 \le m \le M-1\) ,我们称 \(p_m[i’]\)\(h[n]\) 的第 \(m\) 个多相成分(polyphase component)

What have we done ?

Split up \(h[n]\) into \(M\) subsequences – where the \(\text {m}^{th}\) subsequence is a decimated-by-M version of \(h[n+m]\)

Why the name “Polyphase” ?

因为时域的时移(time-shift) 等价于频域的相移(phase-shift) \[
h[n+m] \leftrightarrow e^{j\omega m} H(j \omega)
\]
这里我们记 \(u_m[n] = x[nM-m]\) \[
\begin {align}
y[n] &= \sum_{m=0}^{M-1} \sum_{i’} h[i’M+m] x[nM-i’M-m] \\
&= \sum_{m=0}^{M-1} [\sum_{i’} p_m[i’] u_m[n-i’]] \\
&= \sum_{m=0}^{M-1} \{ p_m \ast u_m \}[n]
\end {align}
\]
结论: To Implement Polyphase Decimation:

  • Chop up filter into M sub-filters (polyphase)
  • Chop up signal into M sub-signals (down sampling)
  • Filter each sub-signal w/ a sub-filter
  • Add outputs point-by-point

现在我们从另一个角度思考

4. 多相插值滤波器

表示为: \[
y[n] = \sum_i x[i] h[n-Li]
\]
重新定义 \(n\) \[
n = n’L +(L-1) – l =
\begin{cases}
n’ \quad \text {integer} \\
0 \le l \le L-1
\end{cases}
\]
\(n’\) = Block Index; \(l\) = In-Block Index

于是: \[
y[n] = \sum_i x[i] h[n-Li]
\]

\[
\begin {align}
y[n'L +(L-1) – l ] &= \sum_{i} x[i] h[n'L +(L-1) – l – Li] \\
&= \sum_{i} x[i] h[(n'-i)L + (L-1) -l ]
\end {align}
\]
定义: \[
q_l[n'] = h[n'L + (L-1) – l] \\
v_l[n'] = y[n'L + (L-1)-l]
\]
可以得到: \[
v_l[n'] = { x \ast q_l } [n']
\]
可以证明: \[
y[n] = \sum{i=0}^{L-1} { v_l }{(\uparrow L)} [n- (L-1)+l]
\]

发表评论

电子邮件地址不会被公开。 必填项已用*标注