数字信号上下采样对频谱影响,以及如何添加相应滤波器

为了便于理解,我们不妨假设有这样一个低通信号,他的数据速率(即当前采样率Fs)为1GHz,不过最高频率fm只有300M。
x [ n ] < − − − > X ( e j ω ) x[n]<--->X(e^{j\omega}) x[n]<>X(e)
该信号的时域波形如何我们并不关心,因为上下采无非就是往中间插0以及从内部抽取。我们关心他的频域如何变化,会不会混叠,以及我们上下采样之前之后应当如何添加相应的低通滤波器
假设现在频谱如下所示

请添加图片描述

左图为该离散信号的频谱,离散信号的频谱以2 π \pi π为周期延拓。
右图为matlab中对该信号进行观测所得频谱,更便于大家理解。受限于奈奎斯特采样定律,只能观察 [ − F s / 2 , F s / 2 ] [-Fs/2,Fs/2] [Fs/2,Fs/2]频段内频谱。

这两张图其实是统一的,右图中横坐标的 F s / 2 = 500 M Fs/2=500M Fs/2=500M对应着左图横坐标的 π \pi π
我们时时刻刻牢记这一点,接下来频谱的变化我们都将用左图的形式表现,对应的方便理解的右图的形式,大家只需要替换 π < − − > F s / 2 \pi<-->F_s/2 π<>Fs/2即可。 F s F_s Fs是当前时刻采样率。

1.上采样(整数倍内插)

我们首先尝试对该信号进行 I I I倍上采样,也就是往两个相邻信号中间插 I − 1 I-1 I1个 0。
x I [ n ] = { x [ n I ] if  n = 0 , I , 2 I , . . . 0 else x_{I}[n] =\begin{cases} x[\frac{n}{I}] &\text{if } n=0,I,2I,... \\ 0 &\text{else} \end{cases} xI[n]={x[In]0if n=0,I,2I,...else
则频域变化为(省去推导过程)
X I ( e j ω ) = X ( e j ω I ) X_{I}(e^{j\omega})=X(e^{j\omega I}) XI(e)=X(eI)
由该式我们可以知道,内插后的频谱是原频谱的线性收缩
为便于画图,我们假设此时是上两倍采样(即 I = 2 I=2 I=2),则相应的频谱变化为
请添加图片描述
左图就是线性收缩后的频谱,就是内插后信号的频谱。
此时采样率变为原信号的两倍,新的 F s = 2000 M F_s=2000M Fs=2000M,最大观察频点为1000M,带入上文着重强调的公式 π < − − > F s / 2 = 1000 M \pi<-->F_s/2=1000M π<>Fs/2=1000M得到便于观察的频谱如右图所示。

此时,我们就会观察到原来在±1000M频点附近的高频分量,相当于我们的信号突然多出了很多不必要的高频噪声,因此我们需要添加一个低通滤波器进行滤除。
滤波器只需要保证通带截止频率>300M,阻带截止频率<700M,即可。

2.下采样(整数倍抽取)

然后我们尝试对原信号进行下采样,就是把原始采样序列x[n] 每隔(D-1) 个数据取一个,以形成一个采样率为原序列1/D的新序列 x D ( m ) x_D(m) xD(m)为:
x D [ n ] = x [ D n ] x_D[n] = x[Dn] xD[n]=x[Dn]

省去推导过程,频域变化为:

X D ( e j ω ) = 1 D ∑ l = 0 D − 1 X [ e j ( ω − 2 π l ) / D ] X_D(e^{j\omega}) = \frac{1}{D}\displaystyle\sum_{l=0}^{D-1} X[e^{j(\omega -2\pi l)/D}] XD(e)=D1l=0D1X[ej(ω2πl)/D]

仔细观察该公式,发现和上采样单纯的线性收缩不同,下采样并不是单纯将频谱线性展宽。

下采样后的频谱为原频谱经频移和D倍展宽后的D个频谱的叠加和,因此可能存在混叠。

为方便大家理解,我们对该信号进行两倍下采样,得到频谱变化如下图所示:请添加图片描述

因此,下采样之前需要进行防混迭滤波。
我们可以用一个截止频率为 − π / D -\pi/D π/D的滤波器
请添加图片描述

这样就可以有效防止混叠。

综上,上采是先内插,再滤波。下采是先滤波,再抽取。

reference:

  1. 奥本海姆 《信号与系统》
  2. 沈莹 《软件无线电》
  • 36
    点赞
  • 119
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
STM8S 是一种微控制器系列,它具有模拟到数字转换器(ADC)功能,用于对模拟信号进行采样和转换为数字信号。在STM8S上实现AD采样滤波算法有很多种方法,下面我将介绍一种常见的算法。 第一步是设置ADC的参数。我们可以选择采样速率、参考电压和采样分辨率等参数,以适应应用的需求。 第二步是初始化ADC。这包括设置引脚和模式,并启用ADC模块。 第三步是开始AD转换。通过启动ADC转换,并等待转换完成的标志位。 第四步是获取转换结果。读取ADC的数据寄存器,获取转换后的数字值。 第五步是进行滤波。我们可以使用不同的滤波算法来处理采样数据,如移动平均滤波、中值滤波或卡尔曼滤波等。这些算法可以根据应用的需求选择适当的方法。 最后一步是根据需要重复以上步骤。我们可以设置一个循环来连续进行AD采样和滤波,以获取连续的数据流。 需要注意的是,选择适当的采样速率和滤波算法非常重要。过高的采样速率可能会浪费系统资源,而过低的采样速率可能会导致数据丢失或失真。滤波算法的选择应根据应用的实际需求和性能要求进行权衡。 总结起来,STM8S上的AD采样滤波算法需要经过设置参数、初始化ADC、开始转换、获取结果和滤波处理等步骤,以获取满足应用需求的高质量数字信号。这是一种常见的实现方法,具体的细节会根据具体的应用和系统要求进行调整和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值