[离散时间信号处理学习笔记] 14. 多采样率信号处理
多采样率信号处理一般是指利用增采样、减采样、压缩器和扩展器等方式来提高信号处理系统效率的技术(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,那么压缩器在时域上的表示为
xd[n]=x[nM]
x[n]的采样频率为T,那么xd[n]的采样频率为Td=MT,按照离散序列与连续信号在频域上的关系,有
X(ejω)Xd(ejω)=1T∑k=−∞∞Xc[j(ωT−2πkT)]=1MT∑r=−∞∞Xc[j(ωMT−2πrMT)]
压缩前的序列频谱X(ejω)与压缩后的序列频谱Xd(ejω)之间有如下关系
Xd(ejω)=1MT∑r=−∞∞Xc[j(ωMT−2πrMT)]=1MT{⋅⋅⋅+Xc[j(ωMT−−2πMT)]+Xc[j(ωMT−0MT)]+Xc[j(ωMT−2πMT)]+⋅⋅⋅}=1MT{⋅⋅⋅+Xc[j(ωMT−0MT)]+⋅⋅⋅+Xc[j(ωMT−2(M−1)πMT)]+Xc[j(ωMT−2MπMT)]+⋅⋅⋅+Xc[j(ωMT−2MπMT−2(M−1)πMT)]+⋅⋅⋅}
=1MT{⋅⋅⋅+∑i=0M−1Xc[j(ωMT−2iπMT)]+∑i=0M−1Xc[j(ωMT−2iπMT−2πT)]+⋅⋅⋅}=1MT∑k=−∞∞∑i=0M−1Xc[j(ωMT−2πiMT−2πkT)]=1M∑i=0M−1{1T∑k=−∞∞Xc[j(ω−2πiMT−2πkT)]}=1M∑i=0M−1X(ej(ω−2πi)/M)
如下图所示
扩展器
假设扩展器的扩展率为L,那么扩展器在时域上的表示为
xe[n]={x[n/L],0,n=0,±L,±2L,⋅⋅⋅else
扩展前的序列频谱X(ejω)与扩展后的序列频谱Xe(ejω)之间有如下关系
Xe(ejω)=∑n=−∞∞xe[n]e−jωn=∑n=−∞∞x[n/L]e−jωnn=0,±L,±2L,⋅⋅⋅=∑k=−∞∞x[k]e−jωkLletting n=kL=X(ejωL)
如下图所示
滤波与压缩器/扩展器的互换
滤波器与压缩器互换
如上一篇文章所描述的减采样就是一个滤波器与压缩器的级联系统。对于这种级联方式,以下两个系统是等价的
证明:
YR(ejω)=1M∑i=0M−1Xb(ej(ω−2πi)/M)compress Xb(ejω) with M=1M∑i=0M−1X(ej(ω−2πi)/M)H(ej(ω−2πi)/M⋅M)=1M∑i=0M−1X(ej(ω−2πi)/M)H(ej(ω−2πi))=H(ejω)1M∑i=0M−1X(ej(ω−2πi)/M)compress X(ejω) with M=H(ejω)Xa(ejω)=YL(ejω)
这个证明过程运用了前面一小节中的压缩器频谱运算,YR(ejω)=YL(ejω)说明右边的系统跟左边的系统是完全等价的。这两个等价系统也很容易理解,观察下图
根据前面我们对扩展器的讨论,我们可以把H(zM)理解为对H(z)做了因子为M的扩展。两个系统分别对应上图的第二第三行:
上图第二行先对x[n]进行因子为M的压缩得到xa[n],然后级联一个滤波器H(z)
上图第三行先用滤波器H(zM)对x[n]进行滤波得到xb[n],然后对xb[n]进行因子为M的压缩
滤波器与扩展器互换
如上一篇文章所描述的增采样就是一个滤波器与扩展器的级联系统。对于这种级联方式,以下两个系统是等价的
证明:
YL(ejω)=Xa(ejωL)expand Xa(ejω) with L=X(ejωL)H(ejωL)=Xb(ejω)H(ejωL)=YR(ejω)
这个证明过程运用了前面一小节中的扩展器频谱运算,YL(ejω)=YR(ejω)说明右边的系统跟左边的系统是完全等价的。这两个等价系统也很容易理解,观察下图
同样,根据我们前面对扩展器的讨论,我们可以吧H(zL)理解为对H(z)进行了因子为L的扩展。两个系统分别对应上图的第二第三行:
上图第二行先用滤波器H(z)对x[n]进行滤波得到xa[n],然后对xa[n]进行因子为L的扩展
上图第三行先对x[n]进行因子为L的扩展得到xb[n],然后级联一个滤波器H(zL)
多级抽取和内插
当抽取或内插率较大时,即M或者L会非常大,这种情况下对M或者L进行分解,如M=M1M2,把单级抽取转换为多级抽取将会使得系统更为高效,具体原因以后(书中第七章)讨论。如下是两级抽取器:
按照上面的步骤反过来,则能把一个一级抽取转换为二级抽取,该一级抽取的的滤波器的系统函数按照如下方式进行分解:
H(z)=H1(z)H2(zM1)
原滤波器的脉冲响应则为分解出来的两个滤波器的脉冲响应的卷积,如下:
h[n]=h1[n]∗∑k=−∞∞h2[k]δ[n−kM1]
按照这种方式能把一级抽取器扩展到多级抽取。同理,上述理论也能应用到内插处理中。
多相分解
对一个序列进行多相分解,就是把该序列表示成M组子序列的叠加。如下图:
为了得到这M组子序列,可以采用以下的分解方法:
步骤解析如下
首先是对h[n]进行分解能得到ek[n]:
在z变换中,频域上的H(z)⋅zk就相当于时域上h[n]δ[n+k],即进行相位为k的移动,得到h[n+k]
对h[n+k]进行因子为M的压缩,得到ek[n]
接下来是复原为原来的h[n]:
对ek[n]进行因子为M的扩展,得到hk[n]
分别对M个hk[n]进行相应的移位,然后就能合并得到h[n]
下面是一个M=4,k=3的例子
该过程在频域上表示为:
H(z)=∑k=0M−1Ek(zM)z−k
即系统函数H(z)可以被分解成多个经过延迟的滤波器之和,因此就可以把该系统表示成如下并联结构:
抽取/内插滤波器的多相实现
多相分解能降低抽取以及内插实现的计算量。直观地解释就是在抽取的时候,实际上所需要的序列数量只有原序列数量的1M;在内插的时候,对x[n]进行因子为L的扩展后,每L个样本才会有一个非零样本,而零样本是不需要计算的。详情请看下面的分析。
抽取滤波器
原抽取滤波器有如下形式
把抽取滤波器多相分解成如下图左边的形式,然后滤波器与压缩器进行互换就能得到右图的形式。
假设输入序列x[n]的采样率为一个单位时间,即一个单位时间采集一个样本。假设滤波器h[n]为有限长度滤波器(FIR),长度为N个点,那么原抽取滤波器在每个单位时间需要进行N次乘法以及N−1次加法;在采用多相分解实现后,对每个分量来说,每M个单位时间才采集一次,即每一个时间单位采集1M次,并且滤波器变为ek[n],这些滤波器的长度为NM,因此对于每一个分量来说,每个单位时间的运算量为1MNM次乘法、1M(NM−1)次加法。由于共有M个分量,因此整个系统在每个单位时间的运算量为乘法NM次、加法(NM−1)+(M−1)次。
内插滤波器
原内插滤波器有如下形式:
把内插滤波器多相分解为如下图左边的形式,然后滤波器与扩展器进行互换就能得到右图的形式。
假设输入序列x[n]的采样率为一个单位时间,即一个单位时间采集一个样本。假设滤波器h[n]为有限长度滤波器(FIR),长度为N个点,那么在对x[n]进行因子为L的增采样后,内插滤波器在每个单位时间需要进行NL次乘法以及L(N−1)次加法;在采用多相分解实现后,对每个分量来说,每一个单位时间采集一次,并且滤波器变为ek[n],这些滤波器的长度为NL,因此对于每一个分量来说,每个单位时间的运算量为NL次乘法、(NL−1)次加法。由于共有L个分量,因此整个系统在每个单位时间的运算量为乘法N次、加法N−L+(L−1)次。
多采样滤波器组
这一小节主要描述了一个使用了多相抽取以及内插结构的系统。
理想双信道分解/合成系统
如下图所示为一个语音编码中常用的对音频信号进行双信道分解(analysis)以及合成(synthesis)系统的结构框图。对结构中各部分的解释如下:
系统分解部分目的是对音频进行高频以及低频的划分,两个信道的带宽分别为|ω|<π2以及π2<|ω|<π,这部分的分解分别由低通滤波器h0[n]以及高通滤波器h1[n]完成。通常取h1[n]=ejπnh0[n],这意味着只需要对低通滤波器频谱左移π即可得到高通滤波器频谱,H1(ejω)=H0(ej(ω−π))。
由于对源信号并行进行了两组滤波,样本数增加了一倍。为了保持滤波后信号的总样本数不变,需要对滤波后的信号进行压缩,压缩倍率为2,也就是使得低频序列v0[n]以及高频序列v1[n]各占一半的样本数。对信号进行压缩意味着信号频谱的扩展,滤波后的信号频谱的带宽分别为|ω|<π2以及π2<|ω|<π,而压缩后会使得两个信道的信号频谱都扩展到了|ω|<π。
然后可以对v0[n],v1[n]进行各种处理。
系统合成部分的目的就是把两个信道的音频恢复成为全带宽的音频,对于每一个信道来说,此时的样本数只有原样本数的一半,因此需要先把样本进行2倍扩展。
最后分别通过一个低通滤波器以及高通滤波器完成重构,再把得到的信号相加即可得到全带宽音频。
理想情况下会有如下频谱变化:
式子推导如下:
Y(ejω)=expand{compress{X(ejω)H0(ejω)}}G0(ejω)+expand{compress{X(ejω)H1(ejω)}}G1(ejω)=expand{12[X(ejω/2)H0(ejω/2)+X(ej(ω−π)/2)H0(ej(ω−π)/2)]}G0(ejω)+expand {12[X(ejω/2)H1(ejω/2)+X(ej(ω−π)/2)H1(ej(ω−π)/2)]}G1(ejω)=12[X(ejω)H0(ejω)+X(ej(ω−π))H0(ej(ω−π))]G0(ejω)+12[X(ejω)H1(ejω)+X(ej(ω−π))H1(ej(ω−π))]G1(ejω)=12[G0(ejω)H0(ejω)+G1(ejω)H1(ejω)]X(ejω)+12[G0(ejω)H0(ej(ω−π))+G1(ejω)H1(ej(ω−π))]X(ej(ω−π))
对于上述式子,如果是理想滤波器,分频的低通滤波器H0(ejω)与重构的低通滤波器G0(ejω)的取值范围是仅在|ω|<π2处不为0,因此G0(ejω)Hej(ω−π)0的值为0;同理,理想滤波器的情况下,G1(ejω)H1(ej(ω−π))的值为0,所以上述式子的第二项在理想滤波器的情况下应为0。另外,第二项中的频谱包含ω−π相关项,而ω−π的相关项是由于信号的压缩带来的,因此这一项表征了压缩操作中潜在的混叠失真,而上述式子的第一项表征的是式子在理想情况下的分解与重构。
一种能消除混叠的重构系统
现实中不可能完全实现上述理想滤波器,不过我们也可以通过选取满足下述条件的滤波器来消除混叠:
G0(ejω)H0(ej(ω−π))+G1(ejω)H1(ej(ω−π))=0
该条件被称为混叠抵消条件,满足该式子的一组条件为
h1[n]=ejπnh0[n]g0[n]=2h0[n]g1[n]=−2h1[n]⇔H1(ejω)=H0(ej(ω−π))⇔G0(ejω)=2H0(ejω)⇔G1(ejω)=−2H0(ej(ω−π))
把这些式子代入频谱函数得到
Y(ejω)=[H20(ejω)−H20(ej(ω−π))]X(ejω)
因此完美重构(可能带M个样本延迟)要求
H20(ejω)−H20(ej(ω−π))=e−jωM
也就是说,在设计分解/合成系统的时候,如果能找到一个符合上面式子的滤波器H0(ejω),就能使用前面的式子来设计H1(ejω),G0(ejω),G1(ejω),得到一个完美重构系统。不过这只是其中的一种分解/合成系统,这类系统的频谱并不能很好地对源信号进行分频,变换过程与前面描述的理想重构系统并不一样(书中稍有涉猎)。
对于这里所描述的这种系统,可以通过多相分解来大幅降低计算量。
因为系统的压缩以及扩展的倍率为2,因此把h0[n]分成两个序列分量e00[n],e01[n],把g0[n]分成两个序列分量f00[n],f01[n],
结合前面的条件,有
e00[n]e01[n]e10[n]e11[n]f00[n]f01[n]f10[n]f11[n]=h0[2n]=h0[2n+1]=h1[2n]=ej2πnh0[2n]=e00[n]=h1[2n+1]=ej(2n+1)πh0[2n+1]=−e01[n]=g0[2n]=2h0[2n]=2e00[n]=g0[2n+1]=2h0[2n+1]=2e01[n]=g1[2n]=−2h1[2n]=−2e00[n]=−f00[n]=g1[2n+1]=−2h1[2n+1]=2e01[n]=f01[n]
因此该系统可以优化为