MATLAB仿真多相滤波抽取与插值的频谱变化(可视化混叠和镜像)

MATLAB画图仿真多相滤波抽取与插值的频谱变化

可视化多速率信号处理抽取与插值的频谱变化

实信号/复信号

可视化混叠和镜像

目录

前言

一、抽取的基本原理

二、MATLAB仿真抽取运算

三、内插的基本原理

四、MATLAB仿真内插运算

总结


前言

在多速率系统中增加信号采样率的运算叫做内插(Interpolation)或上采样(Up-sampling),降低采样率的运算叫做抽取(Decimation)或下采样(Down-sampling)。抽取和内插均会对信号本身和其频谱产生一定影响,需要通过加低通滤波器去除这种影响。本人在MATLAB软件上仿真了抽取和插值对频谱造成的影响,并在此记录一下,记录一是为了传播知识,二是方便自己回顾。


++提示:以下是本篇文章正文内容,引用请附上链接!++

一、抽取的基本原理

所谓整数因子抽取,就是把原序列x(n)每隔 (D-1) 个点抽取一个点,组成一个新序列,即:

从频域看,抽取序列的频谱是原序列频谱D倍展宽后,按2π的整数倍位移并叠加而成。公式如下:

为保证抽取后不丢失信息,应该保证抽取后信号的频谱不发生混叠,所以在抽取前对信号的频谱应该加以限制。所以在抽取前要先用一个数字低通滤波器(滤波器的带宽为π/D)进行滤波,使得满足:

下面是2个示例:
图1 未低通滤波 2抽取造成频谱混叠
图2 加低通滤波 3抽取未造成频谱混叠

为了提高运算速度,抽取滤波有多相结构,详见文章 多相滤波器MATLAB仿真---抽取&插值-CSDN博客

二、MATLAB仿真抽取运算

抽取就以以下实信号为例说明:

fc=0; % 载波为0

Pn=1; % 噪声功率

D=4; % 抽取因子

fs=120e6; % 采样频率

K=100000; % 采样点数

signal_SNR=20; % 信噪比

signal_f=6e6; % 信号频率

原信号频谱如下图所示:
图3 抽取前120MHz采样速率信号频谱

不加低通滤波抽取后信号频谱如下:可见,噪底明显提高了,这就是因为频谱混叠了,与图1示意图类似。因为是4倍抽取,噪声频谱相当于叠加了4次,所以提高约10*log10(4)=6dB。虽然信号的频谱也会混叠,但由于其在可视化频率之外,显示不出来。
图4 不加低通滤波抽取后30MHz采样速率信号频谱

加低通滤波抽取后信号频谱如下,可见噪底明显降低了,不过带内的噪声抑制的没有带外多。所以在数字信号处理中,进行抽取运算的时候,不可避免地要加低通滤波器抗频谱混叠。为保证抽取后不丢失信息,应该保证抽取后信号的频谱不发生混叠,所以在抽取前对信号的频谱应该加以限制。所以是抽取前低通滤波,那采样频率自然就是抽取前的信号速率
图5 抽取低通滤波器
图6 加低通滤波抽取后30MHz采样速率信号频谱

下面是计算得到的信号功率,加滤波后功率减小,一方面是抑制了噪声,另一方面是通带内有纹波抖动导致信号掉了不到1dB。未加低通滤波噪底抬高但功率不变是因为频谱可视化范围随抽取因子变窄,类似于功率谱变大带宽变小乘起来功率不变。

三、内插的基本原理

I倍插值是在x(n)的每两个点之间补 I-1 个0,再进行平滑滤波。完成插零功能的叫做内插器或上采样器。内插器的输出

从频域上看内插后信号频谱被压缩了 I 倍,公式如下:

为了能得到基带信号,需要通过低通滤波消除内插带来的镜像。低通滤波器的幅度响应为:

下面是示例:
图7 2倍内插频谱变化示例

为了提高运算速度,插值滤波也有多相结构, 详见文章 多相滤波器MATLAB仿真---抽取&插值-CSDN博客

四、MATLAB仿真内插运算

内插就以以下复信号为例说明:

fc=0; % 载波为0

Pn=1; % 噪声功率

I=4; % 插值因子

fs=30e6; % 采样频率

K=25000; % 采样点数

signal_SNR=20; % 信噪比

signal_f=10e6; % LFM信号带宽

原信号频谱如下图所示:
图8 内插前30MHz采样速率信号频谱

不加低通滤波内插后信号频谱如下:可见,整个频谱幅度明显降低了,这是因为插了0的,导致功率下降。因为是4倍内插,插0点数增加了4倍,所以幅度谱降低约10*log10(4)=6dB。另外,显然产生了4个镜像频率成分,这时产生的镜像频率就在可视化频率之内来了。
图9 不加低通滤波内插后120MHz采样速率信号频谱

加低通滤波内插后信号频谱如下,可见镜像频率明显被抑制了。所以在数字信号处理中,进行内插运算的时候,不可避免地要加低通滤波器抑制镜像频率。因为是内插后低通滤波,那采样频率自然就是内插后的信号速率
图10 内插低通滤波器
图11 加低通滤波内插后120MHz采样速率信号频谱

下面是计算得到的信号功率,需要注意的是由于插了几倍的0值,要想前后功率不变,记得在多相滤波时加一个乘积因子I**。这里算出来一样是因为根据内插因子I对幅度进行了补偿。**


总结

抽取和内插均会对信号本身和其频谱产生一定影响,需要通过加低通滤波器去除这种影响。本人在MATLAB软件上仿真了抽取和插值对频谱造成的影响,可视化展现了出来。得出结论:在插值和内插处理操作时一定要加上一个低通滤波器。

相关推荐
2zcode4 小时前
免费开源项目文档:基于MATLAB图像处理的药片检测与计数系统设计与实现
开发语言·图像处理·matlab
Evand J7 小时前
【论文复现】MATLAB例程,存在测距误差的WSN无锚点分布式自定位,《WSN中存在测距误差的无锚点分布式自定位方法》
开发语言·分布式·matlab·定位·导航·wsn
传感器与混合集成电路8 小时前
深度解析电荷平衡式电流频率转换器:积分器、恒流源与阈值比较的协同设计
信号处理
Evand J11 小时前
【MATLAB例程】一维非线性状态滤波对比:经典EKF、MCC-EKF、MVC-EKF。在含异常测量的场景下,对比三种滤波方法的估计曲线和误差统计。
matlab·mvc·ekf·滤波·mcc
2zcode11 小时前
基于MATLAB图像处理的苹果质量智能分级系统设计与实现
图像处理·人工智能·matlab
曲折前进的小白1 天前
MATLAB2026a添加新的工具箱
matlab
m0_547486661 天前
《模式识别:使用MATLAB分析与实现》全套PPT课件
开发语言·matlab·模式识别
Evand J1 天前
【MATLAB例程|车联网6】考虑调头车流扰动与网联车辆实时感知信息的干线多交叉口 FAC-CV 全感应协调控制仿真与性能对比分析
开发语言·matlab·仿真·代码·车联网·智慧交通·车辆
aini_lovee1 天前
计算 HOG算子的典型 MATLAB 程序
开发语言·matlab
bubiyoushang8881 天前
ADMM(交替方向乘子法)算例
matlab