目 录
实验一 Matlab与数字信号处理基础?????????????????????? 2 实验二 离散傅里叶变换与快速傅里叶变换??????????????????? 4 实验三 数字滤波器结构??????????????????????????? 6 注释 ?????????????????????????????????? 9 主要参考文献 ???????????????????????????????? 9
实验一 Matlab与数字信号处理基础
一、实验目的和任务
1、 熟悉Matlab的操作环境 2、学习用Matlab建立基本序列的方法; 3、学习用仿真界面进行信号抽样的方法。
二、实验内容
1、基本序列的产生:
单位抽样序列、单位阶跃序列、矩形序列、实指数序列和复指数序列的产生 2、用仿真界面进行信号抽样练习: 用simulink建模仿真信号的抽样
三、实验仪器、设备及材料
计算机、Matlab软件
四、实验原理
序列的运算、抽样定理
五、主要技术重点、难点
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.^n
stem(n,x);
复指数序列e(-0.2+j0. 3)n:n=0:30;
x=exp((-0.2+j*0.3)*n); 模:stem(n,abs(x)); 幅角:stem(n,angle(x));
2、用仿真界面进行信号抽样练习:
(1)在Matlab命令窗口中输入 simulink 并回车,以打开仿真模块库; (2)按CTRL+N,以新建一仿真窗口;
在仿真模块库中用鼠标点击Sources(输入源模块库),从中选择sine wave(正弦波模块)并
- 1 -
将其拖至仿真窗口;
(3)在仿真模块库中用鼠标点击Discrete(离散模块库),从中选择Zero-Order Hold(零阶保持器模块)并将其拖至仿真窗口;
(4)在仿真模块库中用鼠标点击Sinks(显示模块库),从中选择Scope(示波器模块)并将其拖至仿真窗口;
(5)在仿真窗口中把上述模块依次连接起来;
(6)用鼠标双击Scope模块,以打开示波器的显示界面;
(7)用鼠标点击仿真窗口工具条中的?图标开始仿真,结果显示在示波器中;
(8)用鼠标双击Zero-Order Hold模块,打开其参数设置窗口,改变sample time参数值,例如1、0.5、0.1、0.05…,用鼠标点击仿真窗口工具条中的?图标开始仿真,比较示波器显示结果(选三个参数值,得三个结果);
(9)在仿真模块库中用鼠标点击Sinks(显示模块库),从中选择To Workspace(输出到当前工作空间的变量模块)并将其拖至仿真窗口;
(10)用鼠标双击To Workspace模块,打开其参数设置窗口,改变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)作图,比较序列图显示结果(选三个参数值,得三个结果);
七、实验报告要求
1、实验步骤按实验内容指导进行;
2、对于实验内容1和2的数据必须给出的离散图,其相关参数应在图中注明; 3、具有关联性和比较性的图形最好用subplot()函数,把它们画在一起; 4、实验报告按规定格式填写,要求如下:
(1)实验步骤根据自己实际操作填写;
(2)各小组实验数据不能完全相同,否则以缺席论处;
5、实验结束,实验数据交指导教师检查,得到允许后可以离开,否则以缺席论处;
八、实验注意事项
1、Matlab编程、文件名、存盘目录均不能使用中文。Matlab要区分英文大小写。
- 2 -
2、实验结果要保存,打印后贴在实验报告上。 3、拷图技巧
stem(n,x)得到的Figure
(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,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
五、主要技术重点、难点
Matlab的各种命令与函数、分别绘出DFT、IDFT的实部和虚部
- 3 -
六、实验步骤
1、编写自己的离散傅里叶变换式: 说明:离散傅里叶变对表达式如下
DFTX(k)??x(n)en?0N?1?jnk2?N1IDFTx(n)?N?X(k)ek?0N?1jnk2?N
编写M文件(函数)的具体步骤
(1) 用鼠标点击Matlab主界面工具条上的New M-File图标,打开M文件编辑窗口; (2) 在编辑框中输入以下程序后以文件名“dft.m”存盘(请不要改变路径设置); DFT.m程序 程序说明 function [Xk]=dft(xn) 定义函数dft,xn为参数 xn为需要进行DFT的序列 if nargin<1 error('need x(n)!'); end dft需要参数
N=length(xn); 取序列的点数
n=0:N-1;
k=0:N-1;
2?WN=exp(-j*2*pi/N); ?j计算eN nk=n'*k; WNnk=WN.^nk; Xk=xn*WNnk;
(3) 重复步骤(1),在编辑框中输入以下程序后以文件名“idft.m”存盘; IDFT.m程序代码 程序说明 function [xn]=idft(Xk) 定义函数dft,xn为参数 xn为需要进行DFT的序列 if nargin<1 error('need X(k)!'); end dft需要参数
N=length(Xk); 取序列的点数
n=0:N-1;
k=0:N-1;
2?WN=exp(-j*2*pi/N); ?j计算eN nk=n'*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与原序列x进行比较,x1和x2相互比较);
- 4 -