基于Matlab的FIR滤波器设计与实现- sunev- 博客园(2)

2020-06-30 10:25

例3 利用MATLAB编程设计一个数字带通滤波器,指标要求如下:通带边缘频率:Ωp1=0.45pi,Ωp2=0.65pi,通带峰值起伏:δ1<=1[dB]。阻带边缘频率:Ωs1=0.3pi,Ωs2=0.8pi,最小阻带衰减:δ2>=40[dB] 。

方法一:窗函数法

程序如下:

[n,wn,bta,ftype]=kaiserord([0.3 0.45 0.65 0.8],[0 1 0],[0.01 0.1087 0.01]);%用kaiserord函数估计出滤波器阶数n和beta参数 h1=fir1(n,wn,ftype,kaiser(n+1,bta),'noscale'); [hh1,w1]=freqz(h1,1,256); figure(1) subplot(2,1,1)

plot(w1/pi,20*log10(abs(hh1))) grid

xlabel('归一化频率w');ylabel('幅度/db'); subplot(2,1,2)

plot(w1/pi,angle(hh1)) grid

xlabel('归一化频率w');ylabel('相位/rad');

波形如下:

滤波器系数为: h1 =

Columns 1 through 8

0.0041 0.0055 -0.0091 -0.0018 -0.0056 -0.0000 0.0391 -0.0152

Columns 9 through 16

-0.0381 0.0077 -0.0293 0.0940 0.0907 -0.2630 -0.0517 0.3500

Columns 17 through 24

-0.0517 -0.2630 0.0907 0.0940 -0.0293 0.0077 -0.0381 -0.0152

Columns 25 through 31

0.0391 -0.0000 -0.0056 -0.0018 -0.0091 0.0055 0.0041

如果直接用freqz(h1,1,256),得幅频特性和相频特性曲线:

方法二:等波纹法设计

程序如下:

[n,fpts,mag,wt]=remezord([0.3 0.45 0.65 0.8],[0 1 0],[0.01

0.1087 0.01]);%用remezord函数估算出remez函数要用到的阶n、归一化频带边缘矢量fpts、频带内幅值响应矢量mag及加权矢量w,使remez函数设计出的滤波器满足f、a及dev指定的性能要求。 h2=remez(n,fpts,mag,wt);%设计出等波纹滤波器 [hh2,w2]=freqz(h2,1,256); figure(2)

subplot(2,1,1)

plot(w2/pi,20*log10(abs(hh2))) grid

xlabel('归一化频率w');ylabel('幅度/db'); subplot(2,1,2)

plot(w2/pi,angle(hh2)) grid

xlabel('归一化频率w');ylabel('相位/rad'); h2

波形如下:

滤波器系数如下: h2 =

Columns 1 through 9

-0.0013 0.0092 -0.0255 -0.0642 0.1177 0.0922 -0.2466 -0.0466 0.3116

Columns 10 through 17

-0.0466 -0.2466 0.0922 0.1177 -0.0642 -0.0255 0.0092 -0.0013

如果直接用freqz(h2,1,256);得幅频特性和相频特性曲线:

方法三:采用FDATool工具

这种方法需要事先计算出滤波器的阶数,bate

值,然后设置相应参数,最后

生成滤波器。

设置界面如下图所示:


基于Matlab的FIR滤波器设计与实现- sunev- 博客园(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:壮语

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: