基于MATLAB的数字信号处理课程教学研究

时间:2022-06-03 04:21:07

基于MATLAB的数字信号处理课程教学研究

摘 要 针对数字信号处理课程理论性强、概念抽象、公式繁杂、学生不易掌握等特点,在理论课讲授过程中引入MATLAB仿真软件,用仿真图直观地演示出来,使学生加深对相关概念的理解和掌握。文章中以窗函数法设计FIR数字滤波器为例,说明MATLAB仿真软件在数字信号处理课程教学中的应用。

关键词 数字信号处理 MATLAB 窗函数 FIR数字滤波器

中图分类号:G424 文献标识码:A

0 引言

MATLAB①已经成为数字信号处理应用中分析和仿真设计的主要工具。软件提供了数字信号处理工具箱,为数字信号处理课程及实验的仿真提供了方便。该软件语句简练、编程简单、使用方便,可以很方便地进行信号分析、处理和设计。

1 基于MATLAB的数字信号处理

数字滤波器的设计是数字信号处理课程中的主要内容,利用MATLAB可以方便地对数字信号处课程中的理论、算法进行仿真设计。下面就利用FIR的窗函数法,设计数字滤波器,以说明MATLAB在数字信号处理课程教学中的应用。

1.1 用窗函数法设计FIR数字滤波器设计步骤

窗函数设计法是FIR数字滤波器的主要设计法,该设计法原理简单、运算精度高,广泛应用于FIR工程数字滤波器的设计中。窗函数法设计FIR数字滤波器的步骤:(1)根据给定的滤波器技术指标,得出理想滤波器的单位抽样响应: = ;(2)根据阻带衰减和过度带宽度选择窗函数及滤波器长度;(3)对加窗确定有限长单位脉冲响应 = ;(4)在频域检查幅频响应∣∣是否满足技术指标的要求,如果不满足,则需要修改设计,使满足所有技术指标要求。

1.2 实例

试用凯塞-贝塞尔窗函数法窗函数②设计一个长度M=45的带阻滤波器,其阻带衰减 = 60dB,滤波器上下限截止频率为%i/3和2%i/3。

由于 = 60dB,则根据经验公式得: = 0.1102(8.7),≥50,是一个可以自由选择的参数,它能够同时调整窗函数的主瓣宽度及旁瓣衰减,值越大,则旁瓣衰减越大,但此时过渡带将变宽。

1.2.1 凯塞-贝塞尔窗函数法设计FIR数字滤波器的MATLAB源程序

源程序:③

%bsf.m带阻滤波器主程序

M=45;n=[0:1:M-1];AS=60;%给定参数

beta=0.1102*(AS-8.7) %经验公式求kaiser窗函数的beta值并显示

win_kai=(kaiser(M,beta))'; %调用用凯塞-贝塞尔窗函数

w1=pi/3;w2=2*pi/3;%带阻滤波器截止频率

h_d=i_lp(pi,M)-i_lp(w2,M)+i_lp(w1,M);%调用理想LPF子程序i_lp,设计理想BSF

hn=h_d.*win_kai;%加窗后实际BSF的单位抽样响应

[db,mag,pha,grd,w]=freqz_m(hn,[1]);%调用子程序freqz_m,求幅频响应

figure(1)

subplot(2,2,1);stem(n,h_d);ylabel('h_d(n)');axis([-1,M,-0.2,0.8]);title('理想带阻滤波器冲激响应');

subplot(2,2,2);stem(n,win_kai);axis([-1,M,0,1.1]);ylabel('w(n)');title('凯塞-贝塞尔窗函数');

subplot(2,2,3);stem(n,hn);ylabel('h(n)');axis([-1,M,-0.2,0.8]);title('实际带阻滤波器冲激响应');

subplot(2,2,4);plot(w/pi,db);grid;xlabel('频率');ylabel('db');title('幅频响应(db)');

axis([0,1,-80,10]);set(gca,'XTickMode','manual','XTick',[0;1/3;2/3;1])

%幅频响应子程序Freqz_m

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

[H,w]=freqz(b,a,1000,'whole');H=(H(1:501))';mag=abs(H);pha=angle(H); db=20*log10((mag+eps)/max(mag));w=(w(1:501))';grd=grpdelay(b,a,w);

%理想LFP子程序i_lp

function h_d=i_lp(wc,M)

n=0:M-1;alpha=(M-1)/2;m=n-alpha+eps;hd=sin(wc*m)./(pi*m);

1.2.2 运行结果

= 5.6533及如图1所示。

由图1可以看出阻带衰减未达到60dB,不满足要求,则需要修改设计。通常采用2种方法修改设计:(1)增大的值;(2)增大窗口长度M。

(1)对直接赋值,取 = 5.9,重新运行主程序,得到如图2所示的仿真结果。由图2可以看出,此时滤波器的时域、频域指标均达到了要求。

(2)选择窗口长度M=49,重新运行上面的程序,得到如图3所示的仿真结果。也可以使该滤波器的时域、频域指标都达到了要求。

2 结束语

由上面的仿真实例可以看出,借助MATLAB数字信号处理工具箱,在课程教学中通过编程对一些比较抽象的设计方法进行仿真演示,将FIR数字滤波器复杂的设计方法、修正设计的过程具体化,这样可以使学生很好地理解和掌握数字信号处理课程中的基本原理、基本概念、基本设计方法,加深了学生对课程中抽象概念的理解,能更好地巩固理论课上所学知识,克服学生的畏难情绪,并能激发学生学习该课程的兴趣。近几年将MATLAB仿真演示引入课堂教学中,取得了良好的教学效果。

注释

① 马兴义等.Matlab 6应用开发指南[M].北京:机械工业出版社,2002.

② 郭建涛.“数字信号处理“的MATLAB应用研究[J].计算机与网络,2010.6:38-40.

③ 楼顺天,李博菡.基于MATLAB 的系统分析与设计——信号处理[M].西安:西安电子科技大学出版社,1998.

上一篇:试析计算机软件开发设计的难点和对策 下一篇:中西思维方式差异与英语写作思维培养