多采樣率信號處理一般是指利用增采樣、減采樣、壓縮器和擴展器等方式來提高信號處理系統效率的技術(These multirate techniques refer in general to utilizing upsampling, downsampling, compressors, and expanders in a variety of ways to increase the efficiency of signal-processing systems. )本文章主要討論多采樣率技術中的兩個研究成果:濾波與壓縮器/擴展器的互換;多相分解。
壓縮器/擴展器的時域與頻域表示
盡管上一篇文章中已經討論過這部分內容,不過由於這部分是理解本文所必須的關鍵知識點,這里將在時域與頻域展開更詳細的分析。
壓縮器
假設壓縮器的壓縮率為$M$,那么壓縮器在時域上的表示為
$x_d[n] = x[nM]$
$x[n]$的采樣頻率為$T$,那么$x_d[n]$的采樣頻率為$T_d = MT$,按照離散序列與連續信號在頻域上的關系,有
$\begin{align*}
X(e^{j\omega}) &= \frac{1}{T}\sum_{k=-\infty}^{\infty}X_c\left[ j\left(\frac{\omega}{T}-\frac{2\pi k}{T}\right)\right ]\\
X_d(e^{j\omega}) &= \frac{1}{MT}\sum_{r=-\infty}^{\infty}X_c\left[ j\left(\frac{\omega}{MT}-\frac{2\pi r}{MT}\right)\right ]
\end{align*}$
壓縮前的序列頻譜$X(e^{j\omega})$與壓縮后的序列頻譜$X_d(e^{j\omega})$之間有如下關系
$\begin{align*}
X_d(e^{j\omega}) &= \frac{1}{MT}\sum_{r=-\infty}^{\infty}X_c\left[ j\left(\frac{\omega}{MT}-\frac{2\pi r}{MT}\right)\right ] \\
& = \frac{1}{MT}\left\{\cdot\cdot\cdot+X_c\left[j\left(\frac{\omega}{MT}-\frac{-2\pi}{MT} \right ) \right ] +X_c\left[ j\left(\frac{\omega}{MT}-\frac{0}{MT}\right)\right ] + X_c\left[j\left(\frac{\omega}{MT}-\frac{2\pi}{MT} \right ) \right ]+\cdot\cdot\cdot \right \}\\
& = \frac{1}{MT}\left\{\cdot\cdot\cdot+X_c\left[j\left(\frac{\omega}{MT}-\frac{0}{MT} \right ) \right ]+\cdot\cdot\cdot +X_c\left[ j\left(\frac{\omega}{MT}-\frac{2(M-1)\pi}{MT}\right)\right ]\right.\\
&\quad\qquad\qquad\left.+ X_c\left[j\left(\frac{\omega}{MT}-\frac{2M\pi}{MT} \right ) \right ]+\cdot\cdot\cdot+ X_c\left[j\left(\frac{\omega}{MT}-\frac{2M\pi}{MT} -\frac{2(M-1)\pi}{MT}\right ) \right ]+\cdot\cdot\cdot \right \}\\
\end{align*}$
$\begin{align*}
\qquad\quad\ &= \frac{1}{MT}\left\{\cdot\cdot\cdot+\sum_{i=0}^{M-1}X_c\left[j\left(\frac{\omega}{MT}-\frac{2i\pi}{MT} \right ) \right ]+\sum_{i=0}^{M-1}X_c\left[j\left(\frac{\omega}{MT}-\frac{2i\pi}{MT}-\frac{2\pi}{T} \right ) \right ]+\cdot\cdot\cdot\right\}\\
&= \frac{1}{MT}\sum_{k=-\infty}^{\infty} \sum_{i=0}^{M-1}X_c\left[j\left(\frac{\omega}{MT}-\frac{2\pi i}{MT}-\frac{2\pi k}{T} \right ) \right ] \\
&=\frac{1}{M}\sum_{i=0}^{M-1}\left\{\frac{1}{T}\sum_{k=-\infty}^{\infty}X_c\left[j\left(\frac{\omega-2\pi i}{MT}-\frac{2\pi k}{T} \right ) \right ]\right\}\\
&=\frac{1}{M}\sum_{i=0}^{M-1}X(e^{j(\omega-2\pi i)/M})
\end{align*}$
如下圖所示
擴展器
假設擴展器的擴展率為$L$,那么擴展器在時域上的表示為
$x_e[n] = \left\{\begin{matrix}
x[n/L], &n=0,\pm L,\pm 2L,\cdot\cdot\cdot \\
0, &else
\end{matrix}\right.$
擴展前的序列頻譜$X(e^{j\omega})$與擴展后的序列頻譜$X_e(e^{j\omega})$之間有如下關系
$\begin{align*}
X_e(e^{j\omega}) &= \sum_{n=-\infty}^{\infty}x_e[n]e^{-j\omega n}\\
&=\sum_{n=-\infty}^{\infty}x[n/L]e^{-j\omega n}\quad n=0,\pm L,\pm 2L,\cdot\cdot\cdot\\
&=\sum_{k=-\infty}^{\infty}x[k]e^{-j\omega kL}\quad letting\ n=kL\\
&=X(e^{j\omega L})
\end{align*}$
如下圖所示
濾波與壓縮器/擴展器的互換
濾波器與壓縮器互換
如上一篇文章所描述的減采樣就是一個濾波器與壓縮器的級聯系統。對於這種級聯方式,以下兩個系統是等價的
證明:
$\begin{align*}
Y_{R}(e^{j\omega})
&= \frac{1}{M}\sum_{i=0}^{M-1}X_b(e^{j(\omega-2\pi i)/M}) \quad compress\ X_b(e^{j\omega})\ with\ M\\
&= \frac{1}{M}\sum_{i=0}^{M-1}X(e^{j(\omega-2\pi i)/M})H(e^{j(\omega-2\pi i)/M \cdot M})\\
&= \frac{1}{M}\sum_{i=0}^{M-1}X(e^{j(\omega-2\pi i)/M})H(e^{j(\omega-2\pi i)})\\
&= H(e^{j\omega})\frac{1}{M}\sum_{i=0}^{M-1}X(e^{j(\omega-2\pi i)/M})\quad compress\ X(e^{j\omega})\ with\ M\\
&= H(e^{j\omega})X_a(e^{j\omega})\\
&= Y_L(e^{j\omega})
\end{align*}$
這個證明過程運用了前面一小節中的壓縮器頻譜運算,$Y_{R}(e^{j\omega}) = Y_{L}(e^{j\omega})$說明右邊的系統跟左邊的系統是完全等價的。這兩個等價系統也很容易理解,觀察下圖
根據前面我們對擴展器的討論,我們可以把$H(z^M)$理解為對$H(z)$做了因子為$M$的擴展。兩個系統分別對應上圖的第二第三行:
- 上圖第二行先對$x[n]$進行因子為$M$的壓縮得到$x_a[n]$,然后級聯一個濾波器$H(z)$
- 上圖第三行先用濾波器$H(z^M)$對$x[n]$進行濾波得到$x_b[n]$,然后對$x_b[n]$進行因子為$M$的壓縮
濾波器與擴展器互換
如上一篇文章所描述的增采樣就是一個濾波器與擴展器的級聯系統。對於這種級聯方式,以下兩個系統是等價的
證明:
$\begin{align*}
Y_{L}(e^{j\omega})
&= X_a(e^{j\omega L}) \quad expand\ X_a(e^{j\omega})\ with\ L\\
&= X(e^{j\omega L})H(e^{j\omega L}) \\
&= X_b(e^{j\omega})H(e^{j\omega L})\\
&= Y_R(e^{j\omega})
\end{align*}$
這個證明過程運用了前面一小節中的擴展器頻譜運算,$Y_{L}(e^{j\omega}) = Y_{R}(e^{j\omega})$說明右邊的系統跟左邊的系統是完全等價的。這兩個等價系統也很容易理解,觀察下圖
同樣,根據我們前面對擴展器的討論,我們可以吧$H(z^L)$理解為對$H(z)$進行了因子為$L$的擴展。兩個系統分別對應上圖的第二第三行:
- 上圖第二行先用濾波器$H(z)$對$x[n]$進行濾波得到$x_a[n]$,然后對$x_a[n]$進行因子為$L$的擴展
- 上圖第三行先對$x[n]$進行因子為$L$的擴展得到$x_b[n]$,然后級聯一個濾波器$H(z^L)$
多級抽取和內插
當抽取或內插率較大時,即$M$或者$L$會非常大,這種情況下對$M$或者$L$進行分解,如$M = M_1M_2$,把單級抽取轉換為多級抽取將會使得系統更為高效,具體原因以后(書中第七章)討論。如下是兩級抽取器:
按照上面的步驟反過來,則能把一個一級抽取轉換為二級抽取,該一級抽取的的濾波器的系統函數按照如下方式進行分解:
$H(z) = H_1(z)H_2(z^{M_1})$
原濾波器的脈沖響應則為分解出來的兩個濾波器的脈沖響應的卷積,如下:
$\displaystyle{h[n] = h_1[n]* \sum_{k=-\infty}^{\infty}h_2[k]\delta[n-kM_1]}$
按照這種方式能把一級抽取器擴展到多級抽取。同理,上述理論也能應用到內插處理中。
多相分解
對一個序列進行多相分解,就是把該序列表示成M組子序列的疊加。如下圖:
為了得到這M組子序列,可以采用以下的分解方法:
步驟解析如下
- 首先是對$h[n]$進行分解能得到$\color{red}{e_k[n]}$:
- 在z變換中,頻域上的$H(z)\cdot z^k$就相當於時域上$h[n] \delta[n+k]$,即進行相位為$k$的移動,得到$h[n+k] $
- 對$h[n+k]$進行因子為$M$的壓縮,得到$e_k[n]$
- 接下來是復原為原來的$h[n]$:
- 對$e_k[n]$進行因子為$M$的擴展,得到$h_k[n]$
- 分別對$M$個$h_k[n]$進行相應的移位,然后就能合並得到$h[n]$
下面是一個$M=4,k=3$的例子
該過程在頻域上表示為:
$\displaystyle{ H(z)=\sum_{k=0}^{M-1}E_k(z^M)z^{-k} }$
即系統函數$H(z)$可以被分解成多個經過延遲的濾波器之和,因此就可以把該系統表示成如下並聯結構:
抽取/內插濾波器的多相實現
多相分解能降低抽取以及內插實現的計算量。直觀地解釋就是在抽取的時候,實際上所需要的序列數量只有原序列數量的$\frac{1}{M}$;在內插的時候,對$x[n]$進行因子為$L$的擴展后,每$L$個樣本才會有一個非零樣本,而零樣本是不需要計算的。詳情請看下面的分析。
抽取濾波器
原抽取濾波器有如下形式
把抽取濾波器多相分解成如下圖左邊的形式,然后濾波器與壓縮器進行互換就能得到右圖的形式。
假設輸入序列$x[n]$的采樣率為一個單位時間,即一個單位時間采集一個樣本。假設濾波器$h[n]$為有限長度濾波器(FIR),長度為N個點,那么原抽取濾波器在每個單位時間需要進行$N$次乘法以及$N-1$次加法;在采用多相分解實現后,對每個分量來說,每$M$個單位時間才采集一次,即每一個時間單位采集$\frac{1}{M}$次,並且濾波器變為$e_k[n]$,這些濾波器的長度為$\frac{N}{M}$,因此對於每一個分量來說,每個單位時間的運算量為$\frac{1}{M}\frac{N}{M}$次乘法、$\frac{1}{M}\left(\frac{N}{M}-1\right)$次加法。由於共有$M$個分量,因此整個系統在每個單位時間的運算量為乘法$\frac{N}{M}$次、加法$\left(\frac{N}{M}-1\right)+(M-1)$次。
內插濾波器
原內插濾波器有如下形式:
把內插濾波器多相分解為如下圖左邊的形式,然后濾波器與擴展器進行互換就能得到右圖的形式。
假設輸入序列$x[n]$的采樣率為一個單位時間,即一個單位時間采集一個樣本。假設濾波器$h[n]$為有限長度濾波器(FIR),長度為N個點,那么在對$x[n]$進行因子為$L$的增采樣后,內插濾波器在每個單位時間需要進行$NL$次乘法以及$L(N-1)$次加法;在采用多相分解實現后,對每個分量來說,每一個單位時間采集一次,並且濾波器變為$e_k[n]$,這些濾波器的長度為$\frac{N}{L}$,因此對於每一個分量來說,每個單位時間的運算量為$\frac{N}{L}$次乘法、$\left(\frac{N}{L}-1\right)$次加法。由於共有$L$個分量,因此整個系統在每個單位時間的運算量為乘法$N$次、加法$N-L+(L-1)$次。
多采樣濾波器組
這一小節主要描述了一個使用了多相抽取以及內插結構的系統。
理想雙信道分解/合成系統
如下圖所示為一個語音編碼中常用的對音頻信號進行雙信道分解(analysis)以及合成(synthesis)系統的結構框圖。對結構中各部分的解釋如下:
- 系統分解部分目的是對音頻進行高頻以及低頻的划分,兩個信道的帶寬分別為$|\omega|<\frac{\pi}{2}$以及$\frac{\pi}{2}<|\omega|<\pi$,這部分的分解分別由低通濾波器$h_0[n]$以及高通濾波器$h_1[n]$完成。通常取$h_1[n] = e^{j\pi n}h_0[n]$,這意味着只需要對低通濾波器頻譜左移$\pi$即可得到高通濾波器頻譜,$H_1(e^{j\omega}) = H_0(e^{j(\omega-\pi)})$。
- 由於對源信號並行進行了兩組濾波,樣本數增加了一倍。為了保持濾波后信號的總樣本數不變,需要對濾波后的信號進行壓縮,壓縮倍率為2,也就是使得低頻序列$v_0[n]$以及高頻序列$v_1[n]$各占一半的樣本數。對信號進行壓縮意味着信號頻譜的擴展,濾波后的信號頻譜的帶寬分別為$|\omega|<\frac{\pi}{2}$以及$\frac{\pi}{2}<|\omega|<\pi$,而壓縮后會使得兩個信道的信號頻譜都擴展到了$|\omega|<\pi$。
- 然后可以對$v_0[n],v_1[n]$進行各種處理。
- 系統合成部分的目的就是把兩個信道的音頻恢復成為全帶寬的音頻,對於每一個信道來說,此時的樣本數只有原樣本數的一半,因此需要先把樣本進行2倍擴展。
- 最后分別通過一個低通濾波器以及高通濾波器完成重構,再把得到的信號相加即可得到全帶寬音頻。
理想情況下會有如下頻譜變化:
式子推導如下:
$\begin{align*}
Y(e^{j\omega})&=expand\bigg\{compress\bigg\{X(e^{j\omega})H_0(e^{j\omega})\bigg\}\bigg\}G_0(e^{j\omega})+expand\bigg\{compress\bigg\{X(e^{j\omega})H_1(e^{j\omega})\bigg\}\bigg\}G_1(e^{j\omega})\\
&=expand\left\{\frac{1}{2}\bigg[X(e^{j\omega/2})H_0(e^{j\omega/2})+X(e^{j(\omega-\pi)/2})H_0(e^{j(\omega-\pi)/2})\bigg]\right\}G_0(e^{j\omega})\\
&\quad + expand\ \left\{\frac{1}{2}\bigg[X(e^{j\omega/2})H_1(e^{j\omega/2})+X(e^{j(\omega-\pi)/2})H_1(e^{j(\omega-\pi)/2})\bigg]\right\}G_1(e^{j\omega})\\
&= \frac{1}{2}\bigg[X(e^{j\omega})H_0(e^{j\omega})+X(e^{j(\omega-\pi)})H_0(e^{j(\omega-\pi)})\bigg]G_0(e^{j\omega})\\
&\quad+\frac{1}{2}\bigg[X(e^{j\omega})H_1(e^{j\omega})+X(e^{j(\omega-\pi)})H_1(e^{j(\omega-\pi)})\bigg]G_1(e^{j\omega})\\
&=\frac{1}{2}\bigg[G_0(e^{j\omega})H_0(e^{j\omega})+G_1(e^{j\omega})H_1(e^{j\omega})\bigg]X(e^{j\omega})\\ &\quad+\frac{1}{2}\bigg[G_0(e^{j\omega})H_0(e^{j(\omega-\pi)})+G_1(e^{j\omega})H_1(e^{j(\omega-\pi)}) \bigg]X(e^{j(\omega-\pi)})
\end{align*}$
對於上述式子,如果是理想濾波器,分頻的低通濾波器$H_0(e^{j\omega})$與重構的低通濾波器$G_0(e^{j\omega})$的取值范圍是僅在$|\omega|<\frac{\pi}{2}$處不為0,因此$G_0(e^{j\omega})H_0^{e^{j(\omega-\pi)}}$的值為0;同理,理想濾波器的情況下,$G_1(e^{j\omega})H_1(e^{j(\omega-\pi)})$的值為0,所以上述式子的第二項在理想濾波器的情況下應為0。另外,第二項中的頻譜包含$\omega-\pi$相關項,而$\omega-\pi$的相關項是由於信號的壓縮帶來的,因此這一項表征了壓縮操作中潛在的混疊失真,而上述式子的第一項表征的是式子在理想情況下的分解與重構。
一種能消除混疊的重構系統
現實中不可能完全實現上述理想濾波器,不過我們也可以通過選取滿足下述條件的濾波器來消除混疊:
$G_0(e^{j\omega})H_0(e^{j(\omega-\pi)})+G_1(e^{j\omega})H_1(e^{j(\omega-\pi)})=0$
該條件被稱為混疊抵消條件,滿足該式子的一組條件為
$\color{red}{\begin{align*}
h_1[n] = e^{j\pi n}h_0[n]&\Leftrightarrow H_1(e^{j\omega}) = H_0(e^{j(\omega-\pi)})\\
g_0[n] = 2h_0[n]&\Leftrightarrow G_0(e^{j\omega}) = 2H_0(e^{j\omega})\\
g_1[n] = -2h_1[n]&\Leftrightarrow G_1(e^{j\omega}) = -2H_0(e^{j(\omega-\pi)})
\end{align*}}$
把這些式子代入頻譜函數得到
$Y(e^{j\omega}) = \Big[H_0^2(e^{j\omega})-H_0^2(e^{j(\omega-\pi)})\Big]X(e^{j\omega})$
因此完美重構(可能帶M個樣本延遲)要求
$\color{red}{H_0^2(e^{j\omega})-H_0^2(e^{j(\omega-\pi)}) = e^{-j\omega M}}$
也就是說,在設計分解/合成系統的時候,如果能找到一個符合上面式子的濾波器$H_0(e^{j\omega})$,就能使用前面的式子來設計$H_1(e^{j\omega}),G_0(e^{j\omega}),G_1(e^{j\omega})$,得到一個完美重構系統。不過這只是其中的一種分解/合成系統,這類系統的頻譜並不能很好地對源信號進行分頻,變換過程與前面描述的理想重構系統並不一樣(書中稍有涉獵)。
對於這里所描述的這種系統,可以通過多相分解來大幅降低計算量。
因為系統的壓縮以及擴展的倍率為2,因此把$h_0[n]$分成兩個序列分量$e_{00}[n],e_{01}[n]$,把$g_0[n]$分成兩個序列分量$f_{00}[n],f_{01}[n]$,
結合前面的條件,有
$\begin{align*}
e_{00}[n] &=h_0[2n]\\
e_{01}[n] &=h_0[2n+1]\\
e_{10}[n] &=h_1[2n]=e^{j2\pi n}h_0[2n]=e_{00}[n]\\
e_{11}[n] &=h_1[2n+1]=e^{j(2n+1)\pi}h_0[2n+1]=-e_{01}[n]\\
f_{00}[n] &=g_0[2n]=2h_0[2n]=2e_{00}[n]\\
f_{01}[n] &=g_0[2n+1]=2h_0[2n+1]=2e_{01}[n]\\
f_{10}[n] &=g_1[2n]=-2h_1[2n]=-2e_{00}[n]=-f_{00}[n]\\
f_{11}[n] &=g_1[2n+1]=-2h_1[2n+1]=2e_{01}[n]=f_{01}[n]
\end{align*}$
因此該系統可以優化為