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软件上仿真了抽取和插值对频谱造成的影响,可视化展现了出来。得出结论:在插值和内插处理操作时一定要加上一个低通滤波器。

相关推荐
北京青翼科技3 小时前
【PXIE301-211】基于PXIE总线的16路并行LVDS数据采集、1路光纤数据收发处理平台
图像处理·fpga开发·信号处理
感谢地心引力6 小时前
【Matlab】最新版2025a发布,深色模式、Copilot编程助手上线!
开发语言·windows·matlab·copilot
九亿AI算法优化工作室&6 小时前
乡村地区无人机医药配送路径规划与优化仿真
人工智能·算法·matlab·回归
霖007 小时前
PCIe数据采集系统
数据结构·经验分享·单片机·嵌入式硬件·fpga开发·信号处理
77tian7 小时前
MATLAB安装全攻略:常见问题与解决方案
matlab
电力程序小学童8 小时前
【重磅】配电网智能软开关和储能联合规划
matlab·配电网·储能·优化配置·sop·智能软开关·33节点系统
机器学习之心10 小时前
分类预测 | Matlab实现ABC-Transformer人工蜂群算法优化编码器多特征分类预测/故障诊断Matlab实现
算法·matlab·分类
showmethetime10 小时前
matlab提取脑电数据的五种频域特征指标数值
前端·人工智能·matlab
FL1717131417 小时前
UR5e机器人Matlab仿真
linux·matlab·机器人
tan180°1 天前
Linux进程信号处理(26)
linux·c++·vscode·后端·信号处理