1、目 录实验一 Matlab 与数字信号处理基础 2实验二 离散傅里叶变换与快速傅里叶变换 4实验三 数字滤波器结构 6注释 9主要参考文献 9实验一 Matlab 与数字信号处理基础 - 1 -一、实验目的和任务 1、 熟悉 Matlab 的操作环境 2、学习用 Matlab 建立基本序列的方法;3、学习用仿真界面进行信号抽样的方法。二、实验内容1、基本序列的产生:单位抽样序列、单位阶跃序列、矩形序列、实指数序列和复指数序列的产生2、用仿真界面进行信号抽样练习:用 simulink 建模仿真信号的抽样三、实验仪器、设备及材料 计算机、Matlab 软件四、实验原理序列的运算、抽样定理五、主要技
2、术重点、难点Matlab 的各种命令与函数、建模仿真抽样定理六、实验步骤1、 基本序列的产生:单位抽样序列 (n): n=-2:2;x=0 0 1 0 0;stem(n,x);单位阶跃序列 u(n): n=-10:10;x=zeros(1,10) ones(1,11);stem(n,x);矩形序列 RN(n): n=-2:10;x=0 0 ones(1,5) zeros(1,6);stem(n,x);实指数序列 0.5n: n=0:30;x=0.5.nstem(n,x);复指数序列 e(-0.2+j0. 3)n:n=0:30;x=exp(-0.2+j*0.3)*n);模:stem(n,abs(
3、x);幅角:stem(n,angle(x);2、用仿真界面进行信号抽样练习:(1)在 Matlab 命令窗口中输入 simulink 并回车,以打开仿真模块库;(2)按 CTRL+N,以新建一仿真窗口;在仿真模块库中用鼠标点击 Sources(输入源模块库) ,从中选择 sine wave(正弦波模块)并将- 2 -其拖至仿真窗口;(3)在仿真模块库中用鼠标点击 Discrete(离散模块库) ,从中选择 Zero-Order Hold(零阶保持器模块)并将其拖至仿真窗口;(4)在仿真模块库中用鼠标点击 Sinks(显示模块库) ,从中选择 Scope(示波器模块)并将其拖至仿真窗口;(5)在
4、仿真窗口中把上述模块依次连接起来;(6)用鼠标双击 Scope 模块,以打开示波器的显示界面;(7)用鼠标点击仿真窗口工具条中的图标开始仿真,结果显示在示波器中;(8)用鼠标双击 Zero-Order Hold 模块,打开其参数设置窗口,改变 sample time 参数值,例如1、0.5、0.1、0.05,用鼠标点击仿真窗口工具条中的图标开始仿真,比较示波器显示结果(选三个参数值,得三个结果) ;(9)在仿真模块库中用鼠标点击 Sinks(显示模块库) ,从中选择 To Workspace(输出到当前工作空间的变量模块)并将其拖至仿真窗口;(10)用鼠标双击 To Workspace 模块,
5、打开其参数设置窗口,改变 variable name 参数值为 x ;同时把 save format 参数值设置为 Array ;(11)在仿真窗口中先用鼠标点击 Zero-Order Hold 模块与 Scope 模块的连线,然后按住 CTRL键,从选中连线的中部引出一条线到 To Workspace 模块;(12)用鼠标双击 Zero-Order Hold 模块,打开其参数设置窗口,改变 sample time 参数值,例如 1、0.5、0.1、0.05,用鼠标点击仿真窗口工具条中的图标开始仿真,并返回命令窗口,用 stem(x)作图,比较序列图显示结果(选三个参数值,得三个结果) ;七、
6、实验报告要求1、实验步骤按实验内容指导进行;2、对于实验内容 1 和 2 的数据必须给出的离散图,其相关参数应在图中注明;3、具有关联性和比较性的图形最好用 subplot()函数,把它们画在一起;4、实验报告按规定格式填写,要求如下:(1)实验步骤根据自己实际操作填写;(2)各小组实验数据不能完全相同,否则以缺席论处;5、实验结束,实验数据交指导教师检查,得到允许后可以离开,否则以缺席论处;八、实验注意事项1、Matlab 编程、文件名、存盘目录均不能使用中文。Matlab 要区分英文大小写。- 3 -2、实验结果要保存,打印后贴在实验报告上。3、拷图技巧stem(n,x)得到的 Figur
7、e(1)在 Figure 界面下,先把整个窗口缩小;(2)在 Figure 界面下,点击菜单 Edit / Copy Figure ;(3)在 Word 界面下,用粘贴命令Scope 显示的图(1)键盘上按 Prt Screen 键(2)打开 Windows 附件-画图 -编辑- 粘贴(3)选画图板左边工具栏虚线方框按钮,用鼠标在图中选定所需区域,按 CTRL+c(4) 在 Word 文档中按 CTRL+v九、思考题 1、已知离散系统的输入 x(n)和冲激响应 h(n)如下,求相应的响应 y(n),在计算前估算 y(n)的长度。x(n)=1,4,3,5,1,2,3,5 h(n)=4,2,4,0
8、,4,2 提示:卷积命令 c=conv(f,h);2、实验步骤2中的奈奎斯特频率是多少? 1/3Hz实验二 离散傅里叶变换与快速傅里叶变换 一、实验目的和任务 1、练习 M 文件(函数)的编写;2、学习 DFT、FFT 的初步应用;二、实验内容1、编写离散傅里叶变换式的 M 文件:2、自编函数 dft、idft 与工具函数 fft、ifft 的比较:用 simulink 建模仿真信号的抽样三、实验仪器、设备及材料 计算机、Matlab 软件四、实验原理DFT、IDFT、FFT、IFFT五、主要技术重点、难点- 4 -Matlab 的各种命令与函数、分别绘出 DFT、IDFT 的实部和虚部六、实
9、验步骤1、编写自己的离散傅里叶变换式:说明:离散傅里叶变对表达式如下 102102 )()()()( NkNknjNnNknj eXnxexkX IDFTDFT编写 M 文件(函数)的具体步骤(1) 用鼠标点击 Matlab 主界面工具条上的 New M-File 图标,打开 M 文件编辑窗口;(2) 在编辑框中输入以下程序后以文件名“dft.m”存盘(请不要改变路径设置);DFT.m 程序 程序说明function Xk=dft(xn) 定义函数 dft,xn 为参数xn 为需要进行 DFT 的序列if nargin1 error(need x(n)!); end dft 需要参数N=len
10、gth(xn); 取序列的点数n=0:N-1;k=0:N-1;WN=exp(-j*2*pi/N);计算 Nje2nk=n*k;WNnk=WN.nk;Xk=xn*WNnk;(3) 重复步骤(1) ,在编辑框中输入以下程序后以文件名“idft.m”存盘;IDFT.m 程序代码 程序说明function xn=idft(Xk) 定义函数 dft,xn 为参数xn 为需要进行 DFT 的序列if nargin1 error(need X(k)!); end dft 需要参数N=length(Xk); 取序列的点数n=0:N-1;k=0:N-1;WN=exp(-j*2*pi/N);计算 Nje2nk=n
11、*k;WNnk=WN.(-nk);xn=Xk*WNnk/N;2、自编函数 dft、idft 与工具函数 fft、ifft 的比较:(1) 在命令窗口中建立一序列 x(6 点) ; x=5 2 1 组号 (2) 分别用 dft 和 fft 对 x 进行离散傅立叶变换(X1=dft(x); X2=fft(x); ) ,比较结果;(3) 分别用 idft 和 ifft 进行逆离散傅立叶变换(x1=idft(X1); x2=ifft(X2);) ,比较结果(x1、x2- 5 -与原序列 x 进行比较,x1 和 x2 相互比较) ;3、DFT 的应用:(1) 在 Matlab 主界面中,用鼠标点击菜单
12、File / Import Data;(2) 在文件对话框中选择数据文件 dsp01.mat,导入信号 x;(x 为 512 点的序列)(3) 对信号进行 fft 变换,作出幅度谱和相位谱。程序代码 程序说明N=length(x); 取得信号点数n=0:N-1;X=fft(x); 进行 DFTmX=abs(X); 取模aX=angle(X); 取幅角w=2*pi*n/N; 计算各点频率subplot(2,1,1);plot (w(1:256),mX(1:256); 作幅度谱(线图)subplot(2,1,2);plot (w(1:256),aX(1:256); 作相位谱(线图)七、实验报告要求
13、1、实验步骤按实验内容指导进行;2、对于实验内容 1 要给出程序;3、对于实验内容 2 要给出对比数据和相关结论;4、对于实验内容 3 要给出相关谱线;5、实验报告按规定格式填写,要求如下:(1)实验步骤根据自己实际操作填写;(2)各小组实验数据不能完全相同,否则以缺席论处;6、实验结束,实验数据交指导教师检查,得到允许后可以离开,否则以缺席论处。八、实验注意事项1、Matlab 编程、文件名、存盘目录均不能使用中文。2、实验结果要保存,打印后贴在实验报告上。3、 拷图技巧(1)在 Figure 界面下,先把整个窗口缩小;(2)在 Figure 界面下,点击菜单 Edit / Copy Fig
14、ure ;(3)在 Word 界面下,用粘贴命令九、思考题 1、在离散幅度谱中本已分开的谱线,用线图表示时却没有分开,为什么?提示:stem 与 plot 命令的区别- 6 -实验三 数字滤波器结构 一、实验目的和任务 1、学习 Matlab 的离散仿真环境;2、学习用 Matlab 建立离散系统的方法;3、通过实验操作熟悉滤波器结构;二、实验内容1、用 Matlab 仿真离散系统:2、用直接型结构实现滤波器:3、用直接型结构实现滤波器:4、用级联型结构实现滤波器(选作):三、实验仪器、设备及材料 计算机、Matlab 软件四、实验原理FIR 滤波器、IIR 滤波器的各种结构五、主要技术重点、
15、难点用 Matlab 提供的模块组建各种滤波器。六、实验步骤1、用 Matlab 仿真离散系统:已知某系统的差分方程为 y(n)=x(n)+2.5y(n-1)-y(n-2),其冲激响应为 ,u(n) (0.5312)4h(n)n(试用 Matlab 仿真差分方程,求其冲激响应,并把结果与 h(n)比较。具体操作步骤:(1) 在 Matlab 命令窗口中输入 simulink 并回车,以打开仿真模块库;(2) 在该窗口中选择 File / Open 菜单,打开 IIR01.mdl 文件;(3) 打开的窗口中已有所需模块,请按下图连接各模块; y 偺1 5 z1- 7 -(4) 用鼠标点击仿真窗口
16、工具条中的图标开始仿真;(5) 回到 Matlab 命令窗口中,输入以下程序,比较结果:程序代码 程序说明n=0:10;h=(4/3)*2.n-(1/3)*(0.5).n; 求理论上的冲激序列subplot(2,1,1);stem(n,h); 作出理论上的冲激序列subplot(2,1,2);stem(n,y); 作出实验上的冲激序列2、用直接型结构实现滤波器:已知某滤波器的差分方程(见下) ,试用直接型结构实现该滤波器,求冲激响应。y(n)=x(n)+1.4x(n-1)+0.3x(n-2)-0.3y(n-1)+0.2y(n-2),具体操作步骤:(4) 打开 IIR02.mdl 文件,窗口中已
17、有所需模块,请按下图连接各模块; 3 4 2 zz1(5) 用鼠标点击仿真窗口工具条中的图标开始仿真;(6)回到 Matlab 命令窗口中,输入以下程序,观察冲激响应序列;程序代码 程序说明n=0:10;stem(n,y1); 作出冲激序列3、用直接型结构实现滤波器:试用直接型结构实现内容 2 中的滤波器,求冲激响应。具体操作步骤:(1) 打开 IIR03.mdl 文件,窗口中已有所需模块,请按下图连接各模块;- 8 - z 4 2 z1(2)用鼠标点击仿真窗口工具条中的图标开始仿真;(3)回到 Matlab 命令窗口中,输入以下程序,观察冲激响应序列(比较结果) ;程序代码 程序说明subp
18、lot(2,1,1);stem(n,y1); 直接型冲激序列subplot(2,1,2);stem(n,y2); 直接型冲激序列4、用级联型结构实现滤波器(选作):已知某滤波器的系统函数 H(z)可进行如下分解,试用级联型结构实现该滤波器)()(48.09.145.01).)(.()221211zHzzzzH(1) 打开 Filter04.mdl 文件,点击 图标进行仿真;(2) 回到 Matlab 命令窗口中,输入以下程序,观察冲激响应序列;程序代码 程序说明stem(n,y3(1,1:11); 级联型冲激序列(3) 打开 Filter05.mdl 文件 (交换子系统的顺序),点击图标进行仿
19、真;(4) 回到 Matlab 命令窗口中,输入以下程序,观察冲激响应序列(比较结果) ;程序代码 程序说明subplot(2,1,1);stem(n,y3(1,1:11);subplot(2,1,2);stem(n,y4(1,1:11);七、实验报告要求- 9 -1、实验步骤按实验内容指导进行;2、对于实验内容 1、2 和 3 的数据必须给出的仿真模块图和冲激响应图;3、实验内容 4 仅作为练习,不用给出相关数据;4、实验报告按规定格式填写,要求如下:(1)实验步骤根据自己实际操作填写;(2)各小组实验数据不能完全相同,否则以缺席论处;5、实验结束,实验数据交指导教师检查,得到允许后可以离开
20、,否则以缺席论处;八、实验注意事项1、Matlab 编程、文件名、存盘目录均不能使用中文。2、实验结果要保存,打印后贴在实验报告上。3、仿真模块图的拷贝(1)在仿真界面下,先把整个窗口缩放到合适的大小;(2)点击菜单 Edit / Copy model to clipboard;(3)在 Word 界面下,进行粘贴操作;九、思考题 1、要得到一个方便调节零极点的 IIR 滤波器应用什么结构,为什么?采用级联结构的。从级联型结构中看到,它的每一个基本节只是关系到滤波器的某一对极点和一对零点,调整系数、只单独调整了滤波器第 i 对零点而不影响其他任何零点。同样,调整系数、也只单独调整了滤波器第 i 对极点。因此,这种结构便于准确地实现单节滤波器的零极点,也便于性能调整。然而从总体看,某频率成分在某一节阻断即表现为整体上的阻断,必须在每一节畅通才能表现为整体的畅通,所以,容易控制零点而难于调整极点。注释无主要参考文献:1MATLAB 符号运算及应用 ,黄忠霖编,国防工业出版社,2004实验一