1、抽取和插值的简单说明
抽取和插值是变采样过程中常用的两种手段,其中抽取的目的是降低数据的采样率,以降低对系统存储深度或计算量的要求。插值的目的是提高数据的采样率,以提高系统的计算精度。 M M M倍抽取通常是通过每隔 M M M个样点从原始采样序列中取点来实现的(见图1), M M M倍插值则通常是在原始采样序列中相邻两个采样点之间插入0,使插值后者这两个采样点对应的时间内包含 M M M的采样点(见图2)。
抽取后采样率降低,可能导致抽取后的数据不满足奈奎斯特采样定理(采样率要 ≥ \geq ≥信号最高速率的2倍),此时会产生频谱混叠(另一种解释是:抽取后信号频谱展宽(从归一化频率的角度理解),导致原来分开的周期延拓的频谱可能重叠到一起)。为此,需要在抽取之前进行低通滤波,保证信号最高频率不大于抽取后采样率的一半(特别注意,这边滤波和抽取的操作是不能调换的,因为滤波是无法将混叠后的频谱分离开的)。这边,低通滤波过程是在原采样率条件下进行的,可表示为
y ^ ( n ) = ∑ k = − ( N − 1 ) / 2 ( N − 1 ) / 2 h ( k ) x ( n − k ) (1) \hat{y}(n)=\sum_{k=-(N-1)/2}^{(N-1)/2}h(k)x(n-k) \tag{1} y^(n)=k=−(N−1)/2∑(N−1)/2h(k)x(n−k)(1)
在(1)式中 h ( n ) h(n) h(n)表示滤波器冲激响应。需要注意的是,抽取或插值过程中所用到的滤波器通常为FIR类型,且为了保证具有线性相位,要求FIR滤波器系数具有一定的对称性( h ( n ) = h ( − n ) h(n)=h(-n) h(n)=h(−n))。在上式中, N N N通常取奇数。滤波完成后,需要进行抽样,抽样结果为
y ( n ) = y ^ ( n M ) = ∑ k = − ( N − 1 ) / 2 ( N − 1 ) / 2 h ( k ) x ( n M − k ) (2) y(n)=\hat{y}(nM)=\sum_{k=-(N-1)/2}^{(N-1)/2}h(k)x(nM-k) \tag{2} y(n)=y^(nM)=k=−(N−1)/2∑(N−1)/2h(k)x(nM−k)(2)
将冲激响应的对称性 h ( n ) = h ( − n ) h(n)=h(-n) h(n)=h(−n)代入上式,可进一步得到
y ( n ) = ∑ k = 1 ( N − 1 ) / 2 h ( k ) [ x ( n M − k ) + x ( n M + k ) ] + h ( 0 ) x ( n M ) (3) y(n)=\sum_{k=1}^{(N-1)/2}h(k)[x(nM-k)+x(nM+k)]+h(0)x(nM) \tag{3} y(n)=k=1∑(N−1)/2h(k)[x(nM−k)+x(nM+k)]+h(0)x(nM)(3)
从上面的表达式可以看出,滤波器数据并没有全用到,因此可以在滤波过程中就不计算这些值,以减小计算量,此外,利用(3)中对称性也可以进一步降低计算量。不过,计算效率并不在本文考虑范围内,为此不再赘述。
插值后采样升高,从归一化频率的角度理解,插值后信号频谱被压缩,所以采样率内可以容纳更多信号频谱,即原来在不同延拓周期内的频谱都会被包含到新采样率下的同一个延拓周期内,导致在一个采样率范围内,存在多个完全一样的频谱,这些频谱称为镜像频谱,需要用低通滤波器进行滤除。注意,这边滤波和插值的操作同样不能调换顺序。插值后的系列可表示为
v ( n ) = { x ( n / M ) , m o d ( n , M ) = 0 0 , o t h e r s v(n)= \left\{\begin{matrix} x(n/M), mod(n,M)=0 \\ 0,others \end{matrix}\right. v(n)={x(n/M),mod(n,M)=00,others
此时,滤波后的数据可表示为
y ( n ) = ∑ k = n − ( N − 1 ) / 2 n + ( N − 1 ) / 2 v ( k ) h ( n − k ) y(n)=\sum_{k=n-(N-1)/2}^{n+(N-1)/2} v(k)h(n-k) y(n)=k=n−(N−1)/2∑n+(N−1)/2v(k)h(n−k)
将 v ( k ) v(k) v(k)的表达式带入,可得
y ( n ) = ∑ k = n − ( N − 1 ) / 2 n + ( N − 1 ) / 2 x ( k / M ) h ( n − k ) = ∑ k = n / M − ( N − 1 ) / 2 M n / M + ( N − 1 ) / 2 M x ( k ) h ( n − k M ) (4) y(n)=\sum_{k=n-(N-1)/2}^{n+(N-1)/2} x(k/M)h(n-k)=\sum_{k=n/M-(N-1)/2M}^{n/M+(N-1)/2M} x(k)h(n-kM) \tag{4} y(n)=k=n−(N−1)/2∑n+(N−1)/2x(k/M)h(n−k)=k=n/M−(N−1)/2M∑n/M+(N−1)/2Mx(k)h(n−kM)(4)
在两个采样点间进行插值,等效于以这两个点为起止点,拟合一条曲线,这条拟合的曲线必须经过这两个已知的点,为此上述插值需要满足一定的条件,具体地
y ( r M ) = x ( r M / M ) = x ( r ) = ∑ k = r − ( N − 1 ) / 2 M r + ( N − 1 ) / 2 M x ( k ) h ( r M − k M ) y(rM)=x(rM/M)=x(r)=\sum_{k=r-(N-1)/2M}^{r+(N-1)/2M} x(k)h(rM-kM) y(rM)=x(rM/M)=x(r)=k=r−(N−1)/2M∑r+(N−1)/2Mx(k)h(rM−kM)
根据上面的表达式可得,滤波器系数需满足一定条件,具体地
{ h ( 0 ) = 1 , h ( n ) = 0 , n = ± M , ± 2 M , . . . \left\{\begin{matrix} h(0)=1, \\ h(n)=0, n=\pm M, \pm 2M,... \end{matrix}\right. {h(0)=1,h(n)=0,n=±M,±2M,...
这边不对上述抽取或插值滤波器的具体实现做过多的说明,仅仅是为后面线性插值的描述做一些铺垫而已。
2、线性插值
线性插值是常用的一种插值方法,在两个已有采样点中间插入若干采样点的原则是:以这两个采样点为起始和终止点,计算一条直线,插值的点均匀地分布在这条直线上。 设有两个点 x ( 0 ) x(0) x(0)和 x ( 1 ) x(1) x(1),两者的时间间隔为 T T T,要在这两个点中间插入一些点,使插值后的点数为 M M M,插值后两点之间的时间间隔为 T ′ = T / M T'=T/M T′=T/M,则第 n n n个插值点可表示为
y ( n ) = x ( 0 ) + x ( 1 ) − x ( 0 ) M T ′ − 0 ( n T ′ − 0 ) = x ( 0 ) ( 1 − n M ) + x ( 1 ) ( n M ) (5) y(n)=x(0)+\frac{x(1)-x(0)}{MT'-0}(nT'-0)=x(0)(1-\frac{n}{M})+x(1)(\frac{n}{M}) \tag{5} y(n)=x(0)+MT′−0x(1)−x(0)(nT′−0)=x(0)(1−Mn)+x(1)(Mn)(5)
令 h ( n ) = 1 − n M h(n)=1-\frac{n}{M} h(n)=1−Mn,则 h ( n − M ) = n M h(n-M)=\frac{n}{M} h(n−M)=Mn,则(5)式可表示为
y ( n ) = x ( 0 ) h ( n ) + x ( 1 ) h ( n − M ) (6) y(n)=x(0)h(n)+x(1)h(n-M) \tag{6} y(n)=x(0)h(n)+x(1)h(n−M)(6)
所以 h ( n ) h(n) h(n)可整理为
h ( n ) = { 1 − ∣ n ∣ / M , ∣ n ∣ < M 0 , o t h e r s h(n)= \left\{\begin{matrix} 1-|n|/M, |n|<M \\ 0,others \end{matrix}\right. h(n)={1−∣n∣/M,∣n∣<M0,others
对比(6)式和(4)式,可知线性插值过程可认为是与滤波器 h ( n ) h(n) h(n)的卷积过程, h ( n ) h(n) h(n)对应的频响可表示为:
H ( e j ω T ′ ) = 1 T [ s i n ( ω M T ′ / 2 ) s i n ( ω T ′ / 2 ) ] 2 (7) H(e^{j\omega T'})=\frac{1}{T}[\frac{sin(\omega M T'/2)}{sin(\omega T'/2)}]^2 \tag{7} H(ejωT′)=T1[sin(ωT′/2)sin(ωMT′/2)]2(7)
没时间了,未完待续。。。。。
未完待续…
未完待续…
未完待续…