重采样(一)

重采样算法

在音频领域,存在着多种采样频率。例如CD产品用的抽样率是 44.1kHz,而数字音频广播用的是 32kHz,通话(通信)方面也存在着从8k到16k的转变。
当两个不同采样频率的信号需要进行混合处理时,需要将两者的采样频率进行统一,统一过程中需要用到的算法就是重采样算法。

降采样

抽取(decimation)

降采样主要通过信号的抽取(decimation)来实现,如果要将信号 x ( n ) = x ( t ) ∣ t = n T s x(n)=x(t)|_{t=nT_s} x(n)=x(t)t=nTs的采样频率 f s f_s fs减少 M M M倍,每隔 M M M个点抽取一个,得
y ( n ) = x ( M n ) , n = ( − ∞ , ∞ ) y(n)=x(Mn), n=(-\infty,\infty) y(n)=x(Mn),n=(,)

可以证明 y ( n ) y(n) y(n) x ( n ) x(n) x(n)之间的DTFT有如下关系:
Y ( e j w ) = ∑ k = 0 M − 1 X ( e j ( w − 2 π k ) / M ) Y(e^{jw})=\sum_{k=0}^{M-1}X(e^{j(w-2\pi k)/M}) Y(ejw)=k=0M1X(ej(w2πk)/M)

公式的含义就是,抽取后的信号 y ( n ) y(n) y(n)的频谱等于原先信号 x ( n ) x(n) x(n)频谱先做M倍扩展 ( Y ( e j w ) (Y(e^{jw}) (Y(ejw) w w w对应 X ( e j w / M ) X(e^{jw/M}) X(ejw/M) w / M ) w/M) w/M),再平移 2 π M k ( k = 1 , 2 , . . . M − 1 ) \frac{2\pi}{M}k(k=1,2,...M-1) M2πk(k=1,2,...M1)后的信号进行叠加。
影响比较大的是频谱扩展,由于信号是离散的,DTFT的频谱是周期的,在平移相加时会产生混叠,为了去除掉混叠的影响需要在抽取之前先做低通滤波,提前滤除掉高频后再进行抽取。

先滤波后抽取

h ( n ) h(n) h(n)为一理想低通滤波器,频谱响应为:
H ( w ) = { 1 , ∣ w ∣ ≤ 2 π / M 0 , o t h e r w i s e H(w) =\begin{cases} & 1 , |w| \leq 2\pi/M\\ & 0, otherwise \end{cases} H(w)={1,w2π/M0,otherwise

滤波后的输出为 v ( n ) v(n) v(n),则
v ( n ) = ∑ k = − ∞ ∞ h ( k ) x ( n − k ) v(n)=\sum_{k=-\infty}^{\infty}h(k)x(n-k) v(n)=k=h(k)x(nk)

对滤波后的序列进行抽取,则
y ( n ) = v ( M n ) = ∑ k = − ∞ ∞ h ( k ) x ( M n − k ) y(n)=v(Mn)=\sum_{k=-\infty}^{\infty}h(k)x(Mn-k) y(n)=v(Mn)=k=h(k)x(Mnk)

升采样

插值(interpolation)

升采样主要通过信号的插值来实现,如果要将信号 x ( n ) = x ( t ) ∣ t = n T s x(n)=x(t)|_{t=nT_s} x(n)=x(t)t=nTs的采样频率 f s f_s fs变为 M f s Mf_s Mfs,就每两个点直接插入 M − 1 M-1 M1个零,插零后的信号为 v ( n ) v(n) v(n),
V ( e j w ) = ∑ n = − ∞ ∞ v ( n ) e − j w n = ∑ k = − ∞ ∞ x ( k ) e − j w L = X ( e j w L ) \begin{aligned}V(e^{jw})&=\sum_{n=-\infty}^{\infty}v(n)e^{-jwn}\\ &=\sum_{k=-\infty}^{\infty}x(k)e^{-jwL}\\ &=X(e^{jwL})\end{aligned} V(ejw)=n=v(n)ejwn=k=x(k)ejwL=X(ejwL)

v ( n ) v(n) v(n)做DTFT变换,则
V ( e j w ) = ∑ n = − ∞ ∞ v ( n ) e − j w n = ∑ k = − ∞ ∞ x ( k ) e − j w L = X ( e j w L ) V(e^{jw})=\sum_{n=-\infty}^{\infty}v(n)e^{-jwn}\\ =\sum_{k=-\infty}^{\infty}x(k)e^{-jwL}=X(e^{jwL}) V(ejw)=n=v(n)ejwn=k=x(k)ejwL=X(ejwL)

公式的含义是,插零后的信号进行了频谱的压缩 ( V ( e j w ) (V(e^{jw}) (V(ejw) w w w对应 X ( e j w L ) X(e^{jwL}) X(ejwL) w L ) wL) wL),根据圆周卷积理论,低频会镜像为多余的高频,因此需要插零后再做低通滤波把多余的镜像频率滤除掉。

先插零后滤波

h ( n ) h(n) h(n)为一理想低通滤波器,频谱响应为:
H ( w ) = { c , ∣ w ∣ ≤ π / L 0 , o t h e r w i s e H(w) =\begin{cases} & c , |w| \leq \pi/L\\ & 0, otherwise \end{cases} H(w)={c,wπ/L0,otherwise
c c c为一个常数,后面会证明 c = L c=L c=L
Y ( e j w ) = H ( e j w ) V ( e j w ) = c X ( e j w L ) , ∣ w ∣ ≤ π / L y ( 0 ) = 1 2 π ∫ − π π Y ( e j w ) d w = c 2 π ∫ − π / L π / L X ( e j w L ) d w = c L x ( 0 ) \begin{aligned}Y(e^{jw})&=H(e^{jw})V(e^{jw})=cX(e^{jwL}),|w| \leq \pi/L \\ y(0)&=\frac{1}{2\pi}\int_{-\pi}^{\pi}Y(e^{jw})dw \\ &= \frac{c}{2\pi}\int_{-\pi/L}^{\pi/L}X(e^{jwL})dw \\ &=\frac{c}{L}x(0)\end{aligned} Y(ejw)y(0)=H(ejw)V(ejw)=cX(ejwL),wπ/L=2π1ππY(ejw)dw=2πcπ/Lπ/LX(ejwL)dw=Lcx(0)

c = L c=L c=L时,可以保证直流分量一致。
确定低通滤波器响应后,分析时域关系,
y ( n ) = v ( n ) ∗ h ( n ) = ∑ k = − ∞ ∞ v ( k ) h ( n − k ) = ∑ k = − ∞ ∞ x ( k / L ) h ( n − k ) = ∑ k = − ∞ ∞ x ( k ) h ( n − k L ) \begin{aligned}y(n)&=v(n)*h(n)\\ &=\sum_{k=-\infty}^{\infty}v(k)h(n-k) \\ &=\sum_{k=-\infty}^{\infty}x(k/L)h(n-k)\\ &=\sum_{k=-\infty}^{\infty}x(k)h(n-kL)\end{aligned} y(n)=v(n)h(n)=k=v(k)h(nk)=k=x(k/L)h(nk)=k=x(k)h(nkL)

采样率转换

如果希望输出信号的采样频率变为输入信号的 L / M L/M L/M倍,其中 L , M L,M L,M为正整数,则需要将升采样和降采样相结合。通常是先升采样 L L L倍,在降采样 M M M倍。

H ( w ) = { L , ∣ w ∣ ≤ m i n ( π / L , π / M ) 0 , o t h e r w i s e H(w) =\begin{cases} & L , |w| \leq min(\pi/L,\pi/M)\\ & 0, otherwise \end{cases} H(w)={L,wmin(π/L,π/M)0,otherwise

结合升采样和降采样时的时域关系,可以得出,
y ( n ) = ∑ k = − ∞ ∞ x ( k ) h ( M n − k L ) y(n)=\sum_{k=-\infty}^{\infty}x(k)h(Mn-kL) y(n)=k=x(k)h(MnkL)

因为 h ( n ) h(n) h(n)是因果滤波器,所以 M n − k L ≥ 0 Mn-kL \geq 0 MnkL0,令
k = ⌊ M n L ⌋ − m k =\lfloor\frac{Mn}{L} \rfloor - m k=LMnm则,
M n − k L = M n − ⌊ M n L ⌋ L + m L = m o d ( M n , L ) + m L = ⟨ M n ⟩ L + m L \begin{aligned}Mn-kL &= Mn-\lfloor\frac{Mn}{L}\rfloor L + mL \\ &=mod(Mn,L)+mL \\ &=\left \langle Mn \right \rangle _L + mL\end{aligned} MnkL=MnLMnL+mL=mod(Mn,L)+mL=MnL+mL

带入到 y ( n ) y(n) y(n)中,可得,
y ( n ) = ∑ m = − ∞ ∞ x ( ⌊ M n L ⌋ − m ) h ( m L + ⟨ M n ⟩ L ) y(n)=\sum_{m=-\infty}^{\infty}x(\lfloor\frac{Mn}{L} \rfloor - m)h(mL + \left \langle Mn \right \rangle _L) y(n)=m=x(LMnm)h(mL+MnL)

参考

https://ccrma.stanford.edu/~jos/resample/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值