重采样常用于音频处理。在用麦克风对音频进行采集的时候,常见的采样率有8k(电话)、44.1k(CD)、48k(视频音轨)、96k/192k(Hi-Res),而某些系统会有默认固定的输出采样率(如Android的默认输出采样率为44.1k),此时就需要对输入音频数据进行重采样。
重采样的源样本序列为x[n]
x[n]=xc(nT)
重采样的目标序列为x′[n]
x′[n]=xc(nT′)
如何通过x[n]得到x′[n]就是本文的讨论内容。
本文假设以采样周期为T对xc(t)进行采样满足奈奎斯特采样定律。
减采样(downsampling)
减小采样率的过程被称为减采样,这一小节讨论的是按整数倍减小采样率。
按照我们一般的思维来说,按整数倍(倍数为M)减少采样率应该是直接对源样本序列每隔M个样本提取一个值
xd[n]=x[nM]=xc(nMT)
这种提取方法被称为采样率压缩器,简称压缩器(compressor)。可以看到所得的新序列是原始连续信号的一部分,并且新序列的采样周期为Td=MT。对于该新序列,我们可以分为两种情况进行讨论:
Td符合奈奎斯特采样定理,即新序列能通过一个低通滤波器还原为原始的连续信号
Td不符合奈奎斯特采样定理,即新序列发生混叠,无法还原为原始的连续信号
如下图假设信号在M=2时恰好满足奈奎斯特采样定理,那么在M=3时则会发生混叠
如果在采用了压缩率为M的压缩器后,离散时间信号处理序列仍然符合奈奎斯特采样定理,我们可以直接进行使用xd[n]=x[Mn]来得到减采样序列。而发生混叠的情况则稍微复杂一点。观察混叠的频谱,可以发现只有低频部分保持了与原始信号频谱的一致性,而相当多的高频由于混叠而失去了原始频谱。
频谱丢失得越多说明信号的失真越大,因此为了减少失真,需要尽可能保留更多的原始信号频谱。我们可以先对元素信号进行低通滤波,然后再对滤波后的信号进行周期为MT的采样即可得到失真更少的序列。按照这种思想,采样周期固定为MT,如果一个被采样信号的采样周期为MT,那么采样后不会混叠的条件就是该信号的截至频率为πMT,因此低通滤波的截至频率为πMT。
很明显,先低通滤波后采样的这种方法能最大限度地减低频谱的丢失,从而降低信号失真。
X~d(jΩ)=Xc(jΩ)HM(jΩ)
其中Xd(jΩ)就是对原始信号进行低通滤波后的信号xd(t)的傅里叶变换,低通滤波器的傅里叶变换为HM(jΩ)。不过我们手中的并不是原始信号xc(t),而是序列x[n],为了进入上述流程,我们需要先用x[n]重构出xc(t),才能进行低通滤波以及后续采集
xd(t)=F−1Xd(jΩ)=F−1{Xc(jΩ)HM(jΩ)}=F−1{X(ejΩT)Hr(jΩ)HM(jΩ)}=F−1{X(ejΩT)THM(jΩ)}⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪Hr(jΩ)HM(jΩ)={T,0,|Ω|<π/Telse={1,0,|Ω|<π/MTelse=F−1{Xs(jΩ)THM(jΩ)}=xs(t)∗[MT⋅hm(t)]/Mfourier convolution theorem={∑n=−∞∞x[n]δ(t−nT)}∗{sin(πt/MT)πt/MT}/M=∑n=−∞∞x[n]sin[π(t−nT)/MT]π(t−nT)/MT/M
然后从xd(t)中以MT为周期采集得到xd[n]
xd[n]=xd(nMT)=∑k=−∞∞x[k]sin[π(t−kT)/MT]π(t−kT)/MT/M∣∣∣∣t=nMT=∑k=−∞∞x[k]sin[π(nMT−kT)/MT]π(nMT−kT)/MT/M=∑k=−∞∞x[k]sin[π(nM−k)/M]π(nM−k)/M/M
如果要从连续时间系统来理解的话,我们可以发现重建的连续信号x~d(t)是由无数个x[k]分别对相应位置的截至频率为π/MT的sinc函数进行加权后叠加,然后对叠加得到的信号的幅度除以M得到的。
如果要从离散时间系统来理解x~d[n]的构造公式的话,可以发现上面公式中的sinc函数有如下规律(下二)
H(ejω)={M,0,|ω|<π/MelseH(ejω)={1,0,|ω|<π/Melse⇔⇔h[n]=sin[πn/M]πn/Mh[n]=sin[πn/M]πn/M/M
可以发现该sinc函数是一个增益为1、截至频率为π/M的低通滤波器,该滤波器后接因子为M的压缩器。那么,前面的公式可以理解为:用该滤波器对x[k]进行滤波后再用因子为M的压缩器即可得到x~d[n]。这一过程又被称为抽取(decimation)。