重采样原理及仿真

本文章已经生成可运行项目,

一、前言

​ 重采样分为上采样和下采样,下采样时需要对信号进行抽取,上采样时需要对信号进行插值,下面将介绍一种简单的重采样方式。

二、定义

​ 减少抽样率以去掉过多数据的过程称为信号的抽取(decimatim )”,增加抽样率以增加数据的过程称为信号的“插值(interpolation)。抽取、插值及其二者相结合的使用便可实现信号抽样率的转换。

三、算法

1、信号的抽取

​ 设x(n)x(n)x(n)为数字信号,欲使fsf_sfs减少MMM倍,最简单的方法是将x(n)x(n)x(n)中的每个点中抽取一个,依次组成一个新的序列y(n)y(n)y(n),即
y(n)=x(Mn)n≥0(式1) y(n)=x(Mn)\quad n\geq 0\tag{式1} y(n)=x(Mn)n0(1)
此时,y(n)y(n)y(n)x(n)x(n)x(n)的DTFT有如下关系(详见附A):
Y(ejw)=1M∑k=0M−1X(ej(w−2πk)/M)(式2) Y(e^{jw})=\frac{1}{M}\sum_{k=0}^{M-1}X(e^{j(w-2\pi k)/M})\tag{式2} Y(ejw)=M1k=0M1X(ej(w2πk)/M)(2)
其含义是,将信号x(n)x(n)x(n)MMM倍的抽取后,所得信号y(n)y(n)y(n)的频谱等于原信号x(n)x(n)x(n)的频谱先做MMM倍的扩展,再在www轴上做2πM(k=1,2,...,M−1)\frac{2\pi}{M}\quad (k=1,2,...,M-1)M2π(k=1,2,...,M1)的移位后再迭加。如下图所示。

在这里插入图片描述

​ 由抽样定理,在由x(t)x(t)x(t)抽样变成x(n)x(n)x(n)时,若保证fs≥2fcf_s\geq 2f_cfs2fc,那么抽样的结果不会发生频谱混迭。对x(n)x(n)x(n)MMM倍抽取得到y(n)y(n)y(n),必须满足fs≥2Mfcf_s \geq 2Mf_cfs2Mfc

​ 为了防止抽取后在Y(ejw)Y(e^{jw})Y(ejw)中出现混迭的方法是在对x(n)x(n)x(n)抽取前先做低通滤波,压缩其频带。

​ 令h(n)h(n)h(n)为一理想低通滤波器,即
H(ejw)={1∣w∣≤2πM0others H(e^{jw})=\begin{cases}1&|w|\leq \frac{2\pi}{M}\\0&others\end{cases} H(ejw)={10wM2πothers
​ 令滤波后的输出为v(n)v(n)v(n),则
v(n)=∑k=0∞h(k)x(Mn−k) v(n)=\sum_{k=0}^{\infty}h(k)x(Mn-k) v(n)=k=0h(k)x(Mnk)
=∑k=0∞x(k)h(Mn−k) =\sum_{k=0}^{\infty}x(k)h(Mn-k) =k=0x(k)h(Mnk)
​ 得出
Y(z)=1M∑k=0M−1X(z1MWMk)H(z1MWMk) Y(z)=\frac{1}{M}\sum_{k=0}^{M-1}X(z^{\frac{1}{M}}W_M^k)H(z^{\frac{1}{M}}W_M^k) Y(z)=M1k=0M1X(zM1WMk)H(zM1WMk)
Y(ejw)=1M∑k=0M−1X(ej(w−2πk)/M)H(ej(w−2πk)/M) Y(e^{jw})=\frac{1}{M}\sum_{k=0}^{M-1}X(e^{j(w-2\pi k)/M})H(e^{j(w-2\pi k)/M}) Y(ejw)=M1k=0M1X(ej(w2πk)/M)H(ej(w2πk)/M)

2、信号的插值

​ 将x(n)x(n)x(n)的采样率fsf_sfs增加LLL倍,即LfsLf_sLfs,最简单的方法就是将x(n)x(n)x(n)每两个点之间补上L−1L-1L1个零。设补零后的信号为v(n)v(n)v(n),则
v(n)={x(n/L)n=0,±L,±2L,...0others v(n)=\begin{cases}x(n/L)&n=0, \pm L, \pm 2L,...\\0&others\end{cases} v(n)={x(n/L)0n=0,±L,±2L,...others
由于
V(ejw)=∑n=0∞v(n)e−jwn=∑n=0∞x(n/L)e−jwn V(e^{jw})=\sum_{n=0}^{\infty}v(n)e^{-jwn}=\sum_{n=0}^{\infty}x(n/L)e^{-jwn} V(ejw)=n=0v(n)ejwn=n=0x(n/L)ejwn=∑k=0∞x(k)e−jwkL=\sum_{k=0}^{\infty}x(k)e^{-jwkL} =k=0x(k)ejwkL

V(ejw)=X(ejwL) V(e^{jw})=X(e^{jwL}) V(ejw)=X(ejwL)
同理
V(z)=X(zL) V(z)=X(z^L) V(z)=X(zL)
X(ejw)X(e^{jw})X(ejw)的周期是2π2\pi2πX(ejwL)X(e^{jwL})X(ejwL)的周期是2π/L2\pi /L2π/LV(ejw)V(e^{jw})V(ejw)周期也是2π/L2\pi /L2π/L。上式的含义是在−π∼π-\pi \sim \piππ的范围内,X(ejw)X(e^{jw})X(ejw)的宽带被压缩了LLL,因此,V(ejw)V(e^{jw})V(ejw)−π∼π-\pi \sim \piππ内包含了LLLX(ejw)X(e^{jw})X(ejw)的压缩样本(详见仿真)。多余的L−1L-1L1个周期称为X(ejw)X(e^{jw})X(ejw)的映像,我们要设法去除这些映像。

​ 实际上,用塞进零的方法实现上采样是毫无意义的,因为补零是不可能增加信息的。需要对用x(n)x(n)x(n)中的点对这些零点作出插值,实现插值的方式是用v(n)v(n)v(n)和一低通滤波器做卷积。

​ 令
H(ejw)={C∣w∣≤πL0others H(e^{jw})=\begin{cases}C&|w|\leq \frac{\pi}{L}\\0&others\end{cases} H(ejw)={C0wLπothers
​ 其中,C是标定因子。令v(n)v(n)v(n)通过h(n)h(n)h(n)后的输出为y(n)y(n)y(n),这样滤波器的作用是去除了V(ejw)V(e^{jw})V(ejw)中多余的映像,另一方面,也实现了对v(n)v(n)v(n)中的零值点插值。

​ 因为
Y(ejw)=H(ejw)=cX(ejw)∣w∣≤πL Y(e^{jw})=H(e^{jw})=cX(e^{jw})\quad |w|\leq \frac{\pi}{L} Y(ejw)=H(ejw)=cX(ejw)wLπ
​ 及
y(0)=12π∫−ππY(ejw)dw y(0)=\frac{1}{2\pi}\int_{-\pi}^{\pi}Y(e^{jw})dw y(0)=2π1ππY(ejw)dw
​ 所以
y(0)=c2π∫−π/Lπ/LX(ejw)dw y(0)=\frac{c}{2\pi}\int_{-\pi/L}^{\pi/L}X(e^{jw})dw y(0)=2πcπ/Lπ/LX(ejw)dw
=c2πL∫−ππX(ejw)dw=cLx(0) =\frac{c}{2\pi L}\int_{-\pi}^{\pi}X(e^{jw})dw=\frac{c}{L}x(0) =2πLcππX(ejw)dw=Lcx(0)
这样,若取c=Lc=Lc=L,则可以保证y(0)=x(0)y(0)=x(0)y(0)=x(0)
y(n)=v(n)∗h(n)=∑kv(k)h(n−k) y(n)=v(n)*h(n)=\sum_{k}v(k)h(n-k) y(n)=v(n)h(n)=kv(k)h(nk)
=∑kx(k/L)h(n−k) =\sum_{k}x(k/L)h(n-k) =kx(k/L)h(nk)

y(n)=∑k=0∞x(k)h(n−kL) y(n)=\sum_{k=0}^{\infty}x(k)h(n-kL) y(n)=k=0x(k)h(nkL)

3、python仿真
实验方式:

​ 对5Hz的正弦信号进行抽取和插值实验,倍数M=2

(01)抽值

从上到下依次是:

01、5Hz正弦信号 & 频谱

02、对01隔一置零 & 频谱

03、对01隔一抽值 & 频谱

04、对03低通滤波 & 频谱

在这里插入图片描述

(02)插值

从上到下依次是:

01、5Hz正弦信号 & 频谱

02、对01隔一插零 & 频谱

03、对02低通滤波 & 频谱
在这里插入图片描述

(3)失真初探

对同一段音频,进行重复的下采样上采样,在100次时,高频部分出现失真,不过不明显。

在这里插入图片描述

4、总结

简单的总结一下:

​ 本文档介绍的是一种简单的信号下采样和上采样的算法。下面对上采样和下采样步骤进行简单的概括:

下采样:

​ 01、低通

​ 02、抽值

上采样:

​ 01、插值

​ 02、低通

参考文献

https://blog.youkuaiyun.com/shenziheng1/article/details/53373807

A

推导公式:
y(n)=x(Mn)(A.1) y(n)=x(Mn)\tag{A.1} y(n)=x(Mn)(A.1)
其中的y(n)y(n)y(n)x(n)x(n)x(n)在DTFT有如下关系:
Y(ejw)=1M∑k=0M−1X(ej(w−2πk)/M)(A.2) Y(e^{jw})=\frac{1}{M}\sum_{k=0}^{M-1}X(e^{j(w-2\pi k)/M})\tag{A.2} Y(ejw)=M1k=0M1X(ej(w2πk)/M)(A.2)
证明:y(n)y(n)y(n)zzz变换为
Y(z)=∑n=0∞y(n)z−n=∑n=0∞x(Mn)z−n(A.3) Y(z)=\sum_{n = 0}^{\infty}y(n)z^{-n}=\sum_{n=0}^{\infty}x(Mn)z^{-n}\tag{A.3} Y(z)=n=0y(n)zn=n=0x(Mn)zn(A.3)
定义一个中间变量x1(n)x_1(n)x1(n)
x1(n)={x(n)n=0,±M,±2M,...0others(A.4) x_1(n)=\begin{cases}x(n)&n=0,\pm M,\pm 2M,...\\0&others\end {cases}\tag{A.4} x1(n)={x(n)0n=0,±M,±2M,...others(A.4)
x1(n)x_1(n)x1(n)的采样率为fsf_sfs,而y(n)y(n)y(n)的采样率是fs/Mf_s/Mfs/M

显然,y(n)=x(Mn)=x1(Mn)y(n)=x(Mn)=x_1(Mn)y(n)=x(Mn)=x1(Mn),有
Y(z)=∑n=0∞x1(Mn)z−n=∑n=0∞x1(n)z−n/M(A.5) Y(z)=\sum_{n=0}^{\infty}x_1(Mn)z^{-n}=\sum_{n=0}^{\infty}x_1(n)z^{-n/M}\tag{A.5} Y(z)=n=0x1(Mn)zn=n=0x1(n)zn/M(A.5)

Y(z)=X1(z1/M)(A.6) Y(z)=X_1(z^{1/M})\tag{A.6} Y(z)=X1(z1/M)(A.6)
现接下来是找到x1(z)x_1(z)x1(z)x(z)x(z)x(z)之间的关系。

​ 令p(n)=∑i=0∞σ(n−Mi)p(n)=\sum_{i=0}^{\infty}\sigma(n-Mi)p(n)=i=0σ(nMi)为一脉冲序列,它在MMM的整数倍处的值为1,其余皆为0,其抽样频率为fsf_sfs,由Possion和公式及DFS理论,p(n)p(n)p(n)可以表示为
p(n)=1M∑k=0M−1WM−kn,WM=e−j2π/M(A.7) p(n)=\frac{1}{M}\sum_{k=0}^{M-1}W_M^{-kn},\quad W_M=e^{-j2\pi /M}\tag{A.7} p(n)=M1k=0M1WMkn,WM=ej2π/M(A.7)
因为x1(n)=x(n)p(n)x_1(n)=x(n)p(n)x1(n)=x(n)p(n),所以
X1(z)=∑n=0∞x(n)p(n)z−n=1M∑n=0∞x(n)∑k=0M−1(WM)−knz−n(A.8) X_1(z)=\sum_{n=0}^{\infty}x(n)p(n)z^{-n}=\frac{1}{M}\sum_{n=0}^{\infty}x(n)\sum_{k=0}^{M-1}(W_M)^{-kn}z^{-n}\tag{A.8} X1(z)=n=0x(n)p(n)zn=M1n=0x(n)k=0M1(WM)knzn(A.8)
整理得
X1(z)=1M∑k=0M−1X(zWMk)(A.9) X_1(z)=\frac{1}{M}\sum_{k=0}^{M-1}X(zW_M^k)\tag{A.9} X1(z)=M1k=0M1X(zWMk)(A.9)
将上式带入A.6中得
Y(z)=1M∑k=0M−1X(z1MWMk)(A.10) Y(z)=\frac{1}{M}\sum_{k=0}^{M-1}X(z^{\frac{1}{M}}W_M^k)\tag{A.10} Y(z)=M1k=0M1X(zM1WMk)(A.10)
z=ejwz=e^{jw}z=ejw,带入上式,即A.2,证毕。

本文章已经生成可运行项目
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值