视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
数字信号处理滤波器设计实验报告
2025-10-04 22:07:07 责编:小OO
文档
数字信号处理

实验报告

       

实验名称:  滤波器设计      

实验班级:  09信息工程3班  

姓    名:  

学    号:    

***********

实验日期:   11月18号    

一、实验目的 

1、加深对数字滤波器的常用指标理解。

2、学习数字滤波器的设计方法。 

二、实验原理

图1 FIR幅值函数

低通滤波器的常用指标:

(1)通带边缘频率;

(2)阻带边缘频率;

(3)通带起伏;

(4)通带峰值起伏,

(5)阻带起伏,最小阻带衰减。

三、实验结果及分析

1、求系统

的零、极点和幅度频率响应和相位响应。

   实验结果如下:

   零点为zs = -1.5870 + 1.4470i,-1.5870 - 1.4470i,0.8657 + 1.5779i,0.8657 - 1.5779i,-0.0669  

  极点为ps =0.1328 + 0.9221i,0.1328 - 0.9221i,0.4736 + 0.4752i,0.4736 - 0.4752i,0.5979  

  幅度频率响应和相位响应如下:

源代码如下:

b=[0.0528 0.0797 0.1295 0.1295 0.797 0.0528];

a=[1 -1.8107 2.2947 -1.8801 0.9537 -0.2336];

zs=roots(b)

ps=roots(a)

freqz(b,a)

2、利用MATLAB编程,分别用窗函数法和等波纹滤波器法设计两种FIR数字滤波器,指标要求如下:

通带边缘频率:,通带峰值起伏:。

阻带边缘频率:,最小阻带衰减:。 

 用窗函数法设计的FIR数字滤波器如下:

  源代码如下:

  [n,Wn,beta,ftype]=kaiserord([0.3 0.45 0.65 0.75],[0 1 0],[0.01 0.1087 0.01]);

  h=fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');

[h1,w1]=freqz(h,1,256);

subplot(2,1,1)

plot(w1/pi,20*log10(abs(h1)))

xlabel('归一化的频率w')

ylabel('幅度响应/dB')

grid

subplot(2,1,2)

plot(w1/pi,angle(h1))

xlabel('归一化的频率w')

ylabel('相位/rad')

grid

  

用等波纹滤波器法设计的FIR数字滤波器如下:

  源代码如下:

  [n,fpts,mag,wt]=remezord([0.3 0.45 0.65 0.75],[0 1 0],[0.01 0.1087 0.01]);

h=remez(n,fpts,mag,wt);%设计出等波纹滤波器

[h1,w1]=freqz(h,1,256);

subplot(2,1,1)

plot(w1/pi,20*log10(abs(h1)));

xlabel('归一化的频率w')

ylabel('幅度响应/dB')

grid

subplot(2,1,2)

plot(w1/pi,angle(h1))

xlabel('归一化的频率w')

ylabel('相位/rad')

grid

分析:在幅度频谱上等波纹滤波器阻带边缘比用窗函数实现的更平滑(理想滤波器为垂直下降的)。

从设计的角度考虑,由于窗函数设计法都是通过已有的窗函数对理想滤波器的改造,因此,可以用手算的办法方便的设计滤波器。

而等波纹滤波器,其实现是通过大量的迭代运算来实现,这样的方法一般只能通过软件来设计。

项数的问题由于等波纹滤波器能较平均的分布误差,因此对于相同的阻带衰减,其所需的滤波系数比窗函数的要少。

3、利用MATLAB编程,用脉冲响应不变法和双线性变换法设计一个数字带通滤波器,指标要求如下:

通带边缘频率:,,通带峰值起伏:;

阻带边缘频率:,,最小阻带衰减: 。

   用脉冲响应不变法设计的数字带通滤波器如下:

  源代码如下:

  Wp=[0.45*pi,0.65*pi];

Ws=[0.3*pi,0.8*pi];

Rp=1;

As=40;

T=1;

[N,Wc]=buttord(Wp*T,Ws*T,Rp,As,'s');

[cs,ds]=butter(N,Wc,'s');

[b,a]=impinvar(cs,ds,T);

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

mag=abs(H);

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

plot(w/pi,db);

title('幅频特性')

xlabel('w(/pi)');

ylabel('|H(jw)|/(dB)');

grid

用双线性变换法设计的数字带通滤波器如下:

  源代码如下:

  wp1=tan(0.45*pi/2);

wp2=tan(0.65*pi/2);

ws1=tan(0.3*pi/2);

ws2=tan(0.8*pi/2);

Ap=1;

As=40;

wp=[wp1 wp2];               

ws=[ws1 ws2];

[n,wn]=buttord(wp,ws,Ap,As,'s');%计算滤波器阶数N和3dB截止频率wn

Bw=wn(2)-wn(1);                %通带宽度

Wo=sqrt(wn(2)*wn(1));          %计算中心频率

[z,p,k]=buttap(n);%计算模拟低通原型滤波器系统函数零、极点和增益因子

[b1,a1] = zp2tf(z,p,k);% 将零极点增益模型转换为传递函数模型

[b2,a2] = lp2bp(b1,a1,Wo,Bw) ;%将低通转换成带通

[b,a] = bilinear(b2,a2,0.5); %用双线性变换法将模拟滤波器转换成数字滤波器

[h,w]=freqz(b,a);

plot(w/pi,20*log10(abs(h)));

title('幅频特性')

xlabel('w(/pi)');

ylabel('|H(jw)|(/dB)');

grid on

分析:比较可知,用双线性变换法设计的数字带通滤波器的实现效果比脉冲响应不变法设计的好。这是因为用脉冲响应不变法设计的数字带通滤波器可能会有频域混叠的现象,而双线性变换不存在频率混叠问题。下载本文

显示全文
专题