《数字信号处理》实验指导书
Matlab的各种命令与函数、分别绘出DFT、IDFT的实部和虚部
六、实验步骤
1、编写自己的离散傅里叶变换式: 说明:离散傅里叶变对表达式如下
N?1DFTX(k)??n?0?jnk2?Nx(n)eIDFTx(n)?1NN?1?k?0jnk2?NX(k)e
编写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);),比较结果; x=[5 2 1 2 1 1]
- 10 -
《数字信号处理》实验指导书
x =
5 2 1 2 1 1 >> X1=dft(x); >> X1=dft(x) X1 =
12.0000 3.5000 - 0.8660i 4.5000 - 0.8660i 2.0000 - 0.0000i 4.5000 + 0.8660i 3.5000 + 0.8660i >> x=[5 2 1 2 1 1] x =
5 2 1 2 1 1 >> X2=fft(x) X2 =
12.0000 3.5000 - 0.8660i 4.5000 - 0.8660i 2.0000 4.5000 + 0.8660i 3.5000 + 0.8660i >>
(3) 分别用idft和ifft进行逆离散傅立叶变换(x1=idft(X1); x2=ifft(X2);),比较结果(x1、x2与原序列x进行比较,x1和x2相互比较); x=[5 2 1 2 1 1] x =
5 2 1 2 1 1 >> x1=idft(X1) x1 =
5.0000 - 0.0000i 2.0000 - 0.0000i 1.0000 + 0.0000i 2.0000 + 0.0000i 1.0000 + 0.0000i 1.0000 + 0.0000i >> x=[5 2 1 2 1 1] x =
5 2 1 2 1 1 >> x2=ifft(X2) x2 =
5 2 1 2 1 1
- 11 -
《数字信号处理》实验指导书
>>
3、DFT的应用:
(1) 在Matlab主界面中,用鼠标点击菜单File / Import Data…;
(2) 在文件对话框中选择数据文件dsp01.mat,导入信号x;(x为512点的序列) (3) 对信号进行fft变换,作出幅度谱和相位谱。 程序代码 N=length(x); n=0:N-1; X=fft(x); mX=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));
程序说明 取得信号点数
进行DFT 取模 取幅角
计算各点频率
作幅度谱(线图)
作相位谱(线图)
七、实验报告要求
1、实验步骤按实验内容指导进行; 2、对于实验内容1要给出程序;
3、对于实验内容2要给出对比数据和相关结论; 4、对于实验内容3要给出相关谱线;
- 12 -
《数字信号处理》实验指导书
5、实验报告按规定格式填写,要求如下:
(1)实验步骤根据自己实际操作填写;
(2)各小组实验数据不能完全相同,否则以缺席论处;
6、实验结束,实验数据交指导教师检查,得到允许后可以离开,否则以缺席论处。
八、实验注意事项
1、Matlab编程、文件名、存盘目录均不能使用中文。 2、实验结果要保存,打印后贴在实验报告上。 3、 拷图技巧
(1)在Figure界面下,先把整个窗口缩小;
(2)在Figure界面下,点击菜单Edit / Copy Figure ; (3)在Word界面下,用粘贴命令…
九、思考题
1、在离散幅度谱中本已分开的谱线,用线图表示时却没有分开,为什么? 提示:stem与plot命令的区别
实验三 数字滤波器结构
一、实验目的和任务
1、学习Matlab的离散仿真环境;
2、学习用Matlab建立离散系统的方法; 3、通过实验操作熟悉滤波器结构;
二、实验内容
1、用Matlab仿真离散系统: 2、用直接Ⅰ型结构实现滤波器: 3、用直接Ⅱ型结构实现滤波器: 4、用级联型结构实现滤波器(选作):
三、实验仪器、设备及材料
计算机、Matlab软件
四、实验原理
FIR滤波器、IIR滤波器的各种结构
五、主要技术重点、难点
用Matlab提供的模块组建各种滤波器。
六、实验步骤
1、用Matlab仿真离散系统:
已知某系统的差分方程为 y(n)=x(n)+2.5y(n-1)-y(n-2),
- 13 -
《数字信号处理》实验指导书
其冲激响应为 h(n)?[43?(2)n?13?(0.5)n] u(n),
试用Matlab仿真差分方程,求其冲激响应,并把结果与h(n)比较。 具体操作步骤:
(1) 在Matlab命令窗口中输入 simulink 并回车,以打开仿真模块库; (2) 在该窗口中选择File / Open… 菜单,打开IIR01.mdl文件; (3) 打开的窗口中已有所需模块,请按下图连接各模块; x(n)¥?μ?DòáDó·?¨÷?y(n)1z2.5?·3¨÷?1zy?ê?3á?1?±£′??μ±??á?D¥?μ??óê±÷?-1
(4) 用鼠标点击仿真窗口工具条中的?图标开始仿真;
(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); 作出实验上的冲激序列
- 14 -