MATLAB画图仿真多相滤波抽取与插值的频谱变化
可视化多速率信号处理抽取与插值的频谱变化
实信号/复信号
可视化混叠和镜像
目录
前言
一、抽取的基本原理
二、MATLAB仿真抽取运算
三、内插的基本原理
四、MATLAB仿真内插运算
总结
前言
在多速率系统中增加信号采样率的运算叫做内插(Interpolation)或上采样(Up-sampling),降低采样率的运算叫做抽取(Decimation)或下采样(Down-sampling)。抽取和内插均会对信号本身和其频谱产生一定影响,需要通过加低通滤波器去除这种影响。本人在MATLAB软件上仿真了抽取和插值对频谱造成的影响,并在此记录一下,记录一是为了传播知识,二是方便自己回顾。
提示:以下是本篇文章正文内容,引用请附上链接!
一、抽取的基本原理
所谓整数因子抽取,就是把原序列x(n)每隔 (D-1) 个点抽取一个点,组成一个新序列,即:
从频域看,抽取序列的频谱是原序列频谱D倍展宽后,按2π的整数倍位移并叠加而成。公式如下:
为保证抽取后不丢失信息,应该保证抽取后信号的频谱不发生混叠,所以在抽取前对信号的频谱应该加以限制。所以在抽取前要先用一个数字低通滤波器(滤波器的带宽为π/D)进行滤波,使得满足:
下面是2个示例:


为了提高运算速度,抽取滤波有多相结构,详见文章 多相滤波器MATLAB仿真---抽取&插值-CSDN博客 。
二、MATLAB仿真抽取运算
抽取就以以下实信号为例说明:
fc=0; % 载波为0
Pn=1; % 噪声功率
D=4; % 抽取因子
fs=120e6; % 采样频率
K=100000; % 采样点数
signal_SNR=20; % 信噪比
signal_f=6e6; % 信号频率
原信号频谱如下图所示:

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

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


下面是计算得到的信号功率,加滤波后功率减小,一方面是抑制了噪声,另一方面是通带内有纹波抖动导致信号掉了不到1dB。未加低通滤波噪底抬高但功率不变是因为频谱可视化范围随抽取因子变窄,类似于功率谱变大带宽变小乘起来功率不变。
三、内插的基本原理
I倍插值是在x(n)的每两个点之间补 I-1 个0,再进行平滑滤波。完成插零功能的叫做内插器或上采样器。内插器的输出
从频域上看内插后信号频谱被压缩了 I 倍,公式如下:
为了能得到基带信号,需要通过低通滤波消除内插带来的镜像。低通滤波器的幅度响应为:
下面是示例:

为了提高运算速度,插值滤波也有多相结构, 详见文章 多相滤波器MATLAB仿真---抽取&插值-CSDN博客 。
四、MATLAB仿真内插运算
内插就以以下复信号为例说明:
fc=0; % 载波为0
Pn=1; % 噪声功率
I=4; % 插值因子
fs=30e6; % 采样频率
K=25000; % 采样点数
signal_SNR=20; % 信噪比
signal_f=10e6; % LFM信号带宽
原信号频谱如下图所示:

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

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


下面是计算得到的信号功率,需要注意的是由于插了几倍的0值,要想前后功率不变,记得在多相滤波时加一个乘积因子I。这里算出来一样是因为根据内插因子I对幅度进行了补偿。
总结
抽取和内插均会对信号本身和其频谱产生一定影响,需要通过加低通滤波器去除这种影响。本人在MATLAB软件上仿真了抽取和插值对频谱造成的影响,可视化展现了出来。得出结论:在插值和内插处理操作时一定要加上一个低通滤波器。