实验报告基于MATLAB的数字滤波器设计 联系客服

发布时间 : 星期一 文章实验报告基于MATLAB的数字滤波器设计更新完毕开始阅读3f931a9151e79b89680226e8

实验7\\8 基于MATLAB的数字滤波器设计

实验目的:加深对数字滤波器的常用指标和设计过程的理解。

实验原理:低通滤波器的常用指标:

j?1??P?G(e

j?)?1??P,for???P1??G(ePj?)1??PG(e)??S,for?S?????P

?S??s??P?S通带边缘频率:,阻带边缘频率: ,

??S??P通带起伏:?P,通带峰值起伏:

?pPassbandStopbandTransition band??20log(1??p)[dB]10,阻带起伏:

?s,

Fig 7.1 Typical magnitudespecification for a digital LPF最小阻带衰减:

?S??20log10(?s)[dB]。

数字滤波器有IIR和FIR两种类型,它们的特点和设计方法不同。

在MATLAB中,可以用[b,a]=butter(N,Wn)等函数辅助设计IIR数字滤波器, 也可以用b=fir1(N,Wn,’ftype’) 等函数辅助设计FIR数字滤波器。

实验内容: 利用MATLAB编程设计一个数字带通滤波器,指标要求如下:

通带边缘频率:阻带边缘频率:

?P1?0.45?,?P2?0.65?,通带峰值起伏:??S1?0.3?,

p?1[dB]。 。

?S2?0.75?,最小阻带衰减:

?S?40[dB] 分别用IIR和FIR两种数字滤波器类型进行设计。

实验要求:给出IIR数字滤波器参数和FIR数字滤波器的冲激响应,绘出它们的幅度和相位

频响曲线,讨论它们各自的实现形式和特点。

实验内容: IRR代码:

wp=[0.45*pi,0.65*pi]; ws=[0.3*pi,0.75*pi]; Ap=1; As=40;

[N,Wc]=buttord(wp/pi,ws/pi,Ap,As) ;

[b,a]=butter(N,Wc)%[b,a] = butter(n,Wn,'ftype')

[H,w]=freqz(b,a); subplot(211); mag=abs(H); plot(w/pi,mag); xlabel('角频率(w)'); ylabel('幅度|Ha(j\\w)|'); title('IIR|Ha(j\\w)|'); grid on; subplot(212); phase=angle(H); plot(w/pi,phase); xlabel('角频率(w)'); ylabel('相位');

title('IIR相位响应曲线'); grid on;

图像:

FIR代码:

>> wp1 = 0.4*pi; wp2 = 0.6*pi; >> ws1 = 0.3*pi; ws2 = 0.7*pi;

>> tr_width = min((wp1-ws1),(ws2-wp2))

>> tr_width =0.3142

>> M = ceil(6.2*pi/tr_width) + 1 >> M = 63 >> n=[0:1:M-1];

>> wc1 = (ws1+wp1)/2; wc2 = (wp2+ws2)/2; >> wc=[wc1/pi,wc2/pi]; >> window= hanning(M); >> [h1,w]=freqz(window,1); >> figure(1); >> subplot(2,1,1) >> stem(window); >> axis([0 60 0 1.2]); >> grid;

>> xlabel('n');

>> title('Hanning窗函数'); >> subplot(2,1,2)

>> plot(w/pi,20*log(abs(h1)/abs(h1(1)))); >> axis([0 1 -350 0]); >> grid;

>> xlabel('w/\\pi'); >> ylabel('幅度(dB)');

>> title('Hanning窗函数的频谱'); >> hn = fir1(M-1,wc, hanning (M)); >> [h2,w]=freqz(hn,1,512); >> figure(2); >> subplot(2,1,1) >> stem(n,hn);

>> axis([0 60 -0.25 0.25]); >> grid;

>> xlabel('n');

>> ylabel('h(n)');

>> title('Hanning窗函数的单位脉冲响应'); >> subplot(2,1,2)

>> plot(w/pi,20*log(abs(h2)/abs(h2(1)))); >> grid;

>> xlabel('w/\\pi'); >> ylabel('幅度(dB)'); >> figure(3);

>> phase=angle(h1); >> plot(phase); >> axis([1 pi -1 0]);

>> xlabel('w/\\pi'); >> ylabel('线性相位');

>> title('Hanning窗函数相位特性曲线')