MATLAB仿真-抽取滤波

在ADC的硬件设计中,都需要在模拟输入端加一个低通滤波器,称为抗混叠滤波器,抗混叠滤波器用于限制最高输入频率,如果需要降低采样率,则需要在代码中实现抽取操作,在抽取前也需要抽取滤波器以限制最高频率分量,当原始信号中含有大于fs/(2D)的频率分量(采样率fs,抽取因子D),抽取后的信号会出现混叠,当使用带宽为pai/D的滤波器,可实现抗混叠。

matlab的dsp.FIRDecimator函数实现了2倍抽取+滤波(截止角频率为0.4*pai),假如fs=650Hz,则fmax=325Hz,截止频率=0.4*fmax=130Hz,以下验证抽取滤波的效果。

验证代码如下:

clear;
fs=650;
t=0:1/fs:95-1/fs;
x = cos(2*pi*25*t')+sin(2*pi*50*t')+sin(2*pi*100*t')+sin(2*pi*150*t');
x0=fft(x);
n=length(x);
x1=fftshift(x0);
f0 = (-n/2:n/2-1)*(fs/n);
power0=abs(x1).^2/n;
subplot(211);
stem(f0,power0);
xlabel('Frequency(Hz)')
ylabel('Power')
title('原始信号频谱');

H = dsp.FIRDecimator;
y = step(H,x);
y1=fft(y);
y2=fftshift(y1);
n=length(y);
f1 = (-n/2:n/2-1)*(fs/n);
power1 = abs(y2).^2/n;    % 0-centered power
subplot(212);
stem(f1,power1);
xlabel('Frequency(Hz)')
ylabel('Power')
title('2倍抽取滤波后的信号频谱');

上图可以看出,2倍抽取扩展了频谱,原25Hz移动到50Hz,原50Hz移动到100Hz,原100Hz移动到200Hz,但是原150Hz移动到300Hz的功率几乎变为0,这即是滤波的效果,因为150Hz>截止频率130Hz,被过滤掉了。

  • 6
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力不期待

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值