重采样原理及仿真

一、前言

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

二、定义

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

三、算法

1、信号的抽取

​ 设 x ( n ) x(n) x(n)为数字信号,欲使 f s f_s fs减少 M M M倍,最简单的方法是将 x ( n ) x(n) x(n)中的每个点中抽取一个,依次组成一个新的序列 y ( n ) y(n) y(n),即
y ( n ) = x ( M n ) 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 ( e j w ) = 1 M ∑ k = 0 M − 1 X ( e j ( 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) M M M倍的抽取后,所得信号 y ( n ) y(n) y(n)的频谱等于原信号 x ( n ) x(n) x(n)的频谱先做 M M M倍的扩展,再在 w w w轴上做 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)时,若保证 f s ≥ 2 f c f_s\geq 2f_c fs2fc,那么抽样的结果不会发生频谱混迭。对 x ( n ) x(n) x(n) M M M倍抽取得到 y ( n ) y(n) y(n),必须满足 f s ≥ 2 M f c f_s \geq 2Mf_c fs2Mfc

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

​ 令 h ( n ) h(n) h(n)为一理想低通滤波器,即
H ( e j w ) = { 1 ∣ w ∣ ≤ 2 π M 0 o t h e r s 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 ( M n − k ) v(n)=\sum_{k=0}^{\infty}h(k)x(Mn-k) v(n)=k=0h(k)x(Mnk)
= ∑ k = 0 ∞ x ( k ) h ( M n − k ) =\sum_{k=0}^{\infty}x(k)h(Mn-k) =k=0x(k)h(Mnk)
​ 得出
Y ( z ) = 1 M ∑ k = 0 M − 1 X ( z 1 M W M k ) H ( z 1 M W M k ) 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 ( e j w ) = 1 M ∑ k = 0 M − 1 X ( e j ( w − 2 π k ) / M ) H ( e j ( 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)的采样率 f s f_s fs增加 L L L倍,即 L f s Lf_s Lfs,最简单的方法就是将 x ( n ) x(n) x(n)每两个点之间补上 L − 1 L-1 L1个零。设补零后的信号为 v ( n ) v(n) v(n),则
v ( n ) = { x ( n / L ) n = 0 , ± L , ± 2 L , . . . 0 o t h e r s 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 ( e j w ) = ∑ n = 0 ∞ v ( n ) e − j w n = ∑ n = 0 ∞ x ( n / L ) e − j w n 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 − j w k L =\sum_{k=0}^{\infty}x(k)e^{-jwkL} =k=0x(k)ejwkL

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

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

​ 令
H ( e j w ) = { C ∣ w ∣ ≤ π L 0 o t h e r s 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 ( e j w ) V(e^{jw}) V(ejw)中多余的映像,另一方面,也实现了对 v ( n ) v(n) v(n)中的零值点插值。

​ 因为
Y ( e j w ) = H ( e j w ) = c X ( e j w ) ∣ 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 ) = 1 2 π ∫ − π π Y ( e j w ) d w y(0)=\frac{1}{2\pi}\int_{-\pi}^{\pi}Y(e^{jw})dw y(0)=2π1ππY(ejw)dw
​ 所以
y ( 0 ) = c 2 π ∫ − π / L π / L X ( e j w ) d w y(0)=\frac{c}{2\pi}\int_{-\pi/L}^{\pi/L}X(e^{jw})dw y(0)=2πcπ/Lπ/LX(ejw)dw
= c 2 π L ∫ − π π X ( e j w ) d w = c L x ( 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 = L c=L c=L,则可以保证 y ( 0 ) = x ( 0 ) y(0)=x(0) y(0)=x(0)
y ( n ) = v ( n ) ∗ h ( n ) = ∑ k v ( 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)
= ∑ k x ( 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 − k L ) 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.csdn.net/shenziheng1/article/details/53373807

A

推导公式:
y ( n ) = x ( M n ) (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 ( e j w ) = 1 M ∑ k = 0 M − 1 X ( e j ( 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) z z z变换为
Y ( z ) = ∑ n = 0 ∞ y ( n ) z − n = ∑ n = 0 ∞ x ( M n ) 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)
定义一个中间变量 x 1 ( n ) x_1(n) x1(n)
x 1 ( n ) = { x ( n ) n = 0 , ± M , ± 2 M , . . . 0 o t h e r s (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)
x 1 ( n ) x_1(n) x1(n)的采样率为 f s f_s fs,而 y ( n ) y(n) y(n)的采样率是 f s / M f_s/M fs/M

显然, y ( n ) = x ( M n ) = x 1 ( M n ) y(n)=x(Mn)=x_1(Mn) y(n)=x(Mn)=x1(Mn),有
Y ( z ) = ∑ n = 0 ∞ x 1 ( M n ) z − n = ∑ n = 0 ∞ x 1 ( 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 ) = X 1 ( z 1 / M ) (A.6) Y(z)=X_1(z^{1/M})\tag{A.6} Y(z)=X1(z1/M)(A.6)
现接下来是找到 x 1 ( z ) x_1(z) x1(z) x ( z ) x(z) x(z)之间的关系。

​ 令 p ( n ) = ∑ i = 0 ∞ σ ( n − M i ) p(n)=\sum_{i=0}^{\infty}\sigma(n-Mi) p(n)=i=0σ(nMi)为一脉冲序列,它在 M M M的整数倍处的值为1,其余皆为0,其抽样频率为 f s f_s fs,由Possion和公式及DFS理论, p ( n ) p(n) p(n)可以表示为
p ( n ) = 1 M ∑ k = 0 M − 1 W M − k n , W M = e − j 2 π / 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)
因为 x 1 ( n ) = x ( n ) p ( n ) x_1(n)=x(n)p(n) x1(n)=x(n)p(n),所以
X 1 ( z ) = ∑ n = 0 ∞ x ( n ) p ( n ) z − n = 1 M ∑ n = 0 ∞ x ( n ) ∑ k = 0 M − 1 ( W M ) − k n z − 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)
整理得
X 1 ( z ) = 1 M ∑ k = 0 M − 1 X ( z W M k ) (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 ) = 1 M ∑ k = 0 M − 1 X ( z 1 M W M k ) (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 = e j w z=e^{jw} z=ejw,带入上式,即A.2,证毕。

  • 16
    点赞
  • 120
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
粒子滤波(Particle Filter),也被称为蒙特卡洛滤波(Monte Carlo Filter),是一种基于随机采样的非线性滤波算法。它能够在非线性、非高斯系统中进行状态估计。粒子滤波通过使用一组随机粒子来表示概率密度函数,根据观测数据对粒子进行重采样和权重更新,从而近似地估计目标系统的状态。 粒子滤波的基本原理如下: 1. 初始化:根据先验信息,生成一组初始粒子,并为每个粒子赋予相应的权重。 2. 预测:通过系统的动力学方程对每个粒子进行预测,得到下一个时刻的状态。 3. 更新:根据观测数据,计算每个粒子的权重,并进行归一化。 4. 重采样:根据粒子的权重,以一定概率进行重采样,得到新的粒子集合。 5. 重复步骤2-4,直到达到所需的估计精度或满足停止准则。 粒子滤波在许多领域有广泛的应用,包括目标跟踪、机器人定位与导航、信号处理等。它的优点是能够处理非线性、非高斯的系统,并且不需要对系统进行线性化或假设高斯分布。但同时,粒子滤波的计算复杂度随粒子数目增加而增加,且粒子采样可能存在退化问题。 在MATLAB中,可以使用以下步骤进行粒子滤波的仿真: 1. 初始化粒子集合和权重。 2. 根据系统动力学方程,对每个粒子进行预测。 3. 根据观测数据,计算每个粒子的权重。 4. 对权重进行归一化。 5. 根据粒子的权重进行重采样。 6. 重复步骤2-5,直到达到停止准则。 通过编写MATLAB脚本或函数,可以实现粒子滤波算法的仿真。在每个步骤中,需要根据具体问题和系统模型进行相应的计算和更新。 请注意,以上是粒子滤波的基本原理和步骤,具体的实现细节会根据不同的应用和问题而有所差异。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值