基于MATLAB实现的简单滤波器程序

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信       无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机 

⛄ 内容介绍

数字滤波器是数字信号处理中的重要组成部分.本文提出一种数字滤波器的设计方法--基于MATLAB的数字滤波器的原理与实现.文章通过一FIR滤波器设计实例说明如何利用MATLAB来完成数字滤波器的设计.仿真表明,设计结果的各项性能指标均达到指定要求,设计过程简便易行.

⛄ 完整代码

function mainfun()

Wp=0.2*pi;

Ws=0.4*pi;

tr_width=Ws-Wp;                         %过渡带宽度

N=ceil(6.6*pi/tr_width)+1               %滤波器长度

n=0:1:N-1;

Wc=(Ws+Wp)/2;                           %理想低通滤波器的截至频率          

hd=ideal_lp(Wc,N)';                      %理想低通滤波器的单位冲激响应

w_ham=(hamming(N))                      %海明窗

h=hd.*w_ham;                             %截取得到实际的单位脉冲响应

[db,mag,pha,w]=freqz_m4(h,[1]);          %计算实际滤波器的幅度响应

delta_w=2*pi/1000;

Ap=-(min(db(1:1:Wp/delta_w+1)))          %实际通带纹波

As=-round(max(db(Ws/delta_w+1:1:501)))   %实际阻带纹波

subplot(221)

stem(n,hd)                               %火柴棍图

title('理想单位脉冲响应hd(n)')

subplot(222)

stem(n,w_ham)

title('海明窗w(n)')

subplot(223)

stem(n,h)

title('实际单位脉冲响应h(n)')

subplot(224)

plot(w/pi,db)

title('幅度响应(dB)')

axis([0,1,-100,10])

end

%本程序用到的自定义函数

function hd=ideal_lp(Wc,N)

alpha= (N-1)/2;

n=0:1:N-1;

m=n-alpha+eps;

hd=sin (Wc*m)./(pi*m);

end

function[db,mag,pha,w]=freqz_m4(b,a) 

[H,w]=freqz(b,a,1000,'whole');

H=(H(1:1:501));

w=(w(1:1:501));

mag=abs(H);

db=20*log10((mag+eps)/max(mag));

pha=angle(H);

end

⛄ 运行结果

⛄ 参考文献

[1]廖颀, 刘良福, 肖士斌. 基于MATLAB的数字滤波器设计实现[J]. 赣南师范学院学报, 2006, 27(6):4.

​[2]林俊,黄炜. "基于MATLAB的模拟滤波器设计实现." 电脑知识与技术:学术交流 10期:163-165.

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

matlab科研助手

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

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

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

打赏作者

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

抵扣说明:

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

余额充值