《数字信号处理》实验指导书.docx
- 文档编号:11612828
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:34
- 大小:563.44KB
《数字信号处理》实验指导书.docx
《《数字信号处理》实验指导书.docx》由会员分享,可在线阅读,更多相关《《数字信号处理》实验指导书.docx(34页珍藏版)》请在冰点文库上搜索。
《数字信号处理》实验指导书
实验一离散信号产生和基本运算
一、实验目的
(1)掌握MATLAB最基本的矩阵运算语句。
(2)掌握对常用离散信号的理解和运算实现。
二、实验原理
1.向量的生成
a.利用冒号“:
”运算生成向量,其语句格式有两种:
A=m:
n
B=m:
p:
n
第一种格式用于生成不长为1的均匀等分向量,m和n分别代表向量的起始值和终止值,n>m。
第二种格式用于生成步长为p的均匀等分的向量。
b.利用函数linspace()生成向量,linspace()的调用格式为:
A=linspace(m,n)
B=linspace(m,n,s)
第一种格式生成从起始值m开始到终止值n之间的线性等分的100元素的行向量。
第二种格式生成从起始值m开始到终止值n之间的s个线性等分点的行向量。
2.矩阵的算术运算
a.加法和减法
对于同维矩阵指令的
A+B
A-B
对于矩阵和标量(一个数)的加减运算,指令为:
A+3
A-9
b.乘法和除法运算
A*B是数学中的矩阵乘法,遵循矩阵乘法规则
A.*B是同维矩阵对应位置元素做乘法
B=inv(A)是求矩阵的逆
A/B是数学中的矩阵除法,遵循矩阵除法规则
A./B是同维矩阵对应位置元素相除
另
表示矩阵的转置运算
3.数组函数
下面列举一些基本函数,他们的用法和格式都相同。
sin(A),cos(A),exp(A),log(A)(相当于ln)
sqrt(A)开平方abs(A)求模real(A)求实部imag(A)求虚部
式中A可以是标量也可以是矩阵
例:
利用等差向量产生一个正弦值向量
t=0:
0.1:
10
A=sin(t)
plot(A)
这时候即可看到一个绘有正弦曲线的窗口弹出
另:
每条语句后面加“;”表示不要显示当前语句的执行结果
不加“;”表示要显示当前语句的执行结果。
4.二维曲线的绘制plot()函数
plot()函数是将各个数据点通过连折线的方式来绘制二维图形的,其命令格式有以下几种:
c.plot(y)当y为向量时,以y的序号作为X轴,按向量y的值绘制曲线。
d.plot(x,y)x,y均为向量时,以x向量作为X轴,向量y作为Y轴绘制曲线。
e.plot(x,y1,’option1’,x,y2,’option2’,……)以公共的x向量作为X轴,分别以向量y1,y2……的数据绘制多条曲线,每条曲线的属性由相应的‘option’来确定。
Option选项可以是表示曲线颜色的字符、表示线型格式的符号和表示数据点的标记,各个选项有的可以连在一起使用。
f.plot(x1,y1,’option1’,x2,y2,’option2’,……)分别以向量x1,x2,……作为X轴,以y1,y2,……的数据绘制多条曲线,每条曲线的属性由相应的选项‘option’来确定。
表1plot函数中option选项的取值和含义
符号
颜色
符号
线型
符号
标记
符号
标记
‘b’
蓝色
‘-’
实线
‘.’
点
‘d’
◇
‘g’
绿色
‘:
’
虚线
‘o’
圆圈
‘ˇ’
▽
‘m’
品红
-.
点画线
‘x’
叉号
‘^’
△
‘c’
青色
‘--’
双画线
‘+’
加号
‘<’
左三角
‘k’
黑色
‘none’
无线
‘*’
星号
‘>’
右三角
‘r’
红色
‘s’
□
‘p’
五角星
‘y’
黄色
‘h’
六角星
5.常用离散信号的MATLAB实现函数
1).单位抽样序列
在MATLAB中利用zeros()函数实现
如果
在时间轴上延迟了k个单位,得到
即:
2).单位阶跃序列
在MATLAB中可以利用ones()函数实现。
3).正弦序列
,在MATLAB
4).复指数序列
,在MATLAB中,
5).指数序列
,在MATLAB中,
三、实验内容
(1)熟悉MATLAB的使用环境和方法;
(2)练习使用基本的向量生成、矩阵运算、绘图等语句;
A)利用冒号(:
)生成向量
X1=[12345]
X2=[1.0001.5002.0002.500]
X3=[54321]
B)分别生成3*3,3*4的全0矩阵,全1矩阵和随机矩阵
C)分别输入矩阵
D)分别计算A+B,A-B,A+3,A-4,A*B,A.*B,C=inv(A),A/B,A./B
E)分别计算sin(x1),cos(x1),exp(x1),log(x2),sqrt(x2)
(3)生成以上五种基本离散信号函数;
(4)绘出信号
,当
、
时、
、
、
时的信号实部和虚部图;
(5)绘出信号
的频率是多少?
周期是多少?
产生一个数字频率为0.9的正弦序列,并显示该信号,说明其周期?
四、实验预习要求
(1)预习实验原理。
(2)熟悉实验程序。
(3)思考课程设计实验部分程序的编写。
五、实验报告要求
(1)简述实验目的和步骤
(2)写出各步输入语句和输出结果
六、思考题
(1)矩阵的乘法和除法有几种,它们有什么区别?
(2)离散正弦序列的性质。
实验二基于MATLAB的离散系统时域分析
一、实验目的
(1)学习MATLAB语言的编程和调试技巧;
(2)掌握离散卷积方法和MATLAB语言实现。
二、实验原理
时域中,离散时间系统对输入信号或延迟信号进行运算处理,生成具有所需特性的输出信号。
本实验通过MATLAB仿真一些简单的离散时间信号和系统,并研究其时域特性。
涉及到离散时间信号、离散时间系统、系统性质及线性卷积等知识点。
一个离散时间系统,输入信号为x(n),输出信号为y(n),运算关系用T[﹒]表示,则输入和输出的关系可表示为y(n)=T[x(n)]。
(1)线性时不变系统的输入输出关系可通过单位脉冲响应h(n)表示:
式中*表示卷积运算。
(2)线性时不变系统的实现:
可物理实现的线性时不变系统是稳定的、因果的。
这种系统的单位脉冲响应是因果的(单边)且绝对可和的,即:
:
,
;
。
在MATLAB语言中采用conv实现卷积运算即:
y=conv(x,h),它默认从n=0开始。
三、实验内容
(1)编制程序求解下列两个系统的单位冲激响应和阶跃响应,并绘出其图形。
要求分别用filter、conv、impz三种函数完成。
给出理论计算结果和程序计算结果并讨论。
四、实验预习要求
(1)预习实验原理。
(2)熟悉实验程序。
(3)思考程序设计实验部分程序的编写。
五、实验报告要求
(1)报告中要给出实验的MATLAB程序,并对每个语句给出注释,说明语句作用;
(2)简述实验目的和原理;
(3)给出用笔算时卷积和conv计算线性卷积对照图;
(4)给出收获和体会。
六、思考题
如何用matlab实现卷积函数?
实验三基于ICETEK-F2812-A教学系统软件的离散系统时域分析
一.实验目的
1.熟悉ICETEK-F2812-A教学系统软件的使用方法。
2.熟悉CCS使用软件
二.实验设备
PC兼容机一台,操作系统为Windows2000(或Windows98,WindowsXP,以下默认为
Windows2000),安装CodeComposerStudio3.1软件。
三.实验原理
(一).ICETEK-F2812-A教学系统软件实验设备的安装和设置
A.开发环境
开发TMS320C55xx使用系统一般需要以下设备和软件调试工具:
1.通用PC一台,安装Windows2000或WindowsXP操作系统及常用软件(如:
WinRAR等)。
2.TMS320C28xx评估板及相关电源。
如:
ICETEK–F2812-A评估板。
3.通用DSP仿真器一台及相关连线。
如:
ICETEK-5100USB仿真器。
4.控制对象(选用)。
如:
ICETEK-CTR控制板(在2812实验箱中已包含)。
5.TI的DSP开发集成环境CodeComposerStudio。
如:
CCS3.3。
6.仿真器驱动程序。
7.实验程序及文档。
B.ICETEK-DSP教学实验箱的硬件连接
1.连接电源:
打开实验箱,取出三相电源连接线,将电源线的一端插入实验箱外部左侧箱壁上的电源插孔中。
确认实验箱面板上电源总开关(位于实验箱底板左上角)处于“关”的位置,连接电源线的另一端至220V交流供电插座上,保证稳固连接。
2.使用电源连接线(插头是带孔的)连接各模块电源:
确认实验箱总电源断开。
连ICETEK-CTR板上边插座到实验箱底板上+12V电源插座;ICETEK-CTR板下边插座到实验箱底板上+5V电源插座;如使用PP(并口)型仿真器,则连接仿真器上插座到实验箱底板上+5V电源插座;
连接DSP评估板模块电源插座到实验箱底板上+5V电源插座。
注意各插头要插到底,防止虚接或接触不良。
3.连接DSP评估板信号线:
当需要连接信号源输出到A/D输入插座时,使用信号连接线分别连接相应插座。
4.接通电源:
检查实验箱上220V电源插座(箱体左侧)中保险管是否完好,在连接电源线以后,检查各模块供电连线是否正确连接,打开实验箱上的电源总开关(位于实验箱底板左上角),使开关位于“开”的位置,电源开关右侧的指示灯亮。
C.构造DSP开发软件环境
1.安装CCS软件(此文档假定用户将CCS安装在默认目录C:
\CCStudio_v3.3中,同时也建议用户按照默认安装目录安装):
2.安装DSP通用仿真器驱动
D.设置CCS工作在软件仿真环境
E.启动CCS
1.启动Simulator方式:
双击桌面上图标:
2.启动Emulator方式:
(1)首先将实验箱电源关闭。
连接实验箱的外接电源线。
(2)检查ICETEK-5100USB仿真器的黑色JTAG插头是否正确连接到ICETEK–F2812-A评估板的P5插头上。
注:
仿真器的插头中有一个孔加入了封针,和P5插头上的缺针位置应重合,保证不会插错。
(3)检查是否已经用电源连接线连接了ICETEK–F2812-A评估板上的POW1插座和实验箱底板上+5V电源插座。
注:
新改良的实验箱都不需要额外插电源连接线了。
(4)检查其他连线是否符合实验要求。
检查实验箱上三个拨动开关位置是否符合实验要求。
(5)打开实验箱上电源开关(位于实验箱底板左上角),注意开关边上红色指示灯点亮。
ICETEK–F2812-A评估板上指示灯VCC点亮。
如果打开了ICETEK-CTR的电源开关,ICETEK-CTR板上指示灯POWER点亮。
如果打开了信号源电源开关,相应开关边的指示灯点亮。
(6)用实验箱附带的USB信号线连接ICETEK-5100USB仿真器和PC机后面的USB插座,
注意ICETEK-5100USB仿真器上指示灯Power和Run灯点亮。
⑺双击桌面上仿真器初始化图标:
如果出现下面提示窗口,表示初始化成功,按一下空格键进入下一步操作。
如果窗口中没有出现“按任意键继续…”,请关闭窗口,关闭实验箱电源,再将USB电缆从仿真器上拔出,返回第⑵步重试。
如果窗口中出现“Theadapterreturnedanerror.”,并提示“按任意键继续…”,表示初始化失败,请关闭窗口重试两三次,如果仍然不能初始化则关闭实验箱电源,再将USB电缆从仿真器上拔出,返回第⑵步重试。
⑻双击桌面上图标:
启动CCS3.3:
⑼如果进入CCS提示错误,先选“Abort”,然后用“emurst”初始化仿真器,如提示出错,可多做几次。
如仍然出错,拔掉仿真器上USB接头(白色方形),按一下ICETEK–F2812-A评估板上S1复位按钮,连接USB接头,再做“快捷方式xdsrstusb”。
⑽如果遇到反复不能连接或复位仿真器、进入CCS报错,请打开Windows的“任务管理”,在“进程”卡片上的“映像名称”栏中查找是否有“cc_app.exe”,将它结束再试。
⑾和ccs的以前版本(例如ccs2.21版本)不同的是,仅仅进入ccs3.3软件环境后,CCS软件和2812芯片还无法连接在一起,如下图显示:
⑿此时要按照如下图所示操作,才能把ccs软件和2812芯片连接在一起,然后才能对2812芯片进行控制。
⒀如下图所示,我们就可以确认CCS软件和2812芯片连接在一起了。
F.退出CCS
(二)卷积算法基础理论:
卷积的基本原理和公式:
卷积和:
对离散系统“卷积和”也是求线性时不变系统输出响应(零状态响应)的主要方法。
卷积和的运算在图形表示上可分为四步:
①翻褶先在亚变量坐标M上作出x(m)和h(m),将m=0的垂直轴转为轴翻褶成h(-m)。
②移位将h(-m)移位n,即得h(n-m)。
当n为正整数时,右移n位。
当n为负整数时,左移n位。
③相乘再将h(n-m)和x(m)的相同m值的对应点值相乘。
④相加把以上所有对应点的乘积叠加起来,即得y(n)值。
依上法,取n=…,-2,-1,0,1,2,3,…各值,即可得全部y(n)值。
2.源程序及注释:
*程序的自编函数及其功能:
①processing1(int*input2,int*output2):
调用形式:
processing1(int*input2,int*output2)
参数解释:
intput2、output2为两个整型指针数组。
返回值解释:
返回了一个“TRUE”,让主函数的while循环保持连续。
功能说明:
对输入的input2buffer波形进行截取m点,再以零点的Y轴为对称轴进行翻褶,把生成的波形上的各点的值存入以OUTPUT2指针开始的一段地址空间中。
②processing2(int*output2,int*output3):
调用形式:
processing2(int*output2,int*output3)
参数解释:
output2、output3为两个整型指针数组。
返回值解释:
返回了一个“TRUE”,让主函数的while循环保持连续。
功能说明:
对输出的output2buffer波形进行作n点移位,然后把生成的波形上的各点的值存入以OUTPUT3指针开始的一段地址空间中。
③processing3(int*input1,int*output2,int*output4):
调用形式:
processing3(int*input1,int*output2,int*output4)
参数解释:
output2、output4、input1为三个整型指针数组。
返回值解释:
返回了一个“TRUE”,让主函数的while循环保持连续。
功能说明:
对输入的input2buffer波形和输入的input1buffer作卷积和运算,然后把生成的波形上的各点的值存入以OUTPUT4指针开始的一段地址空间中。
④processing4(int*input2,int*output1):
调用形式:
processing4(int*input2,int*output1)
参数解释:
output1、input2为两个整型指针数组。
返回值解释:
返回了一个“TRUE”,让主函数的while循环保持连续。
功能说明:
对输入的input2buffer波形截取m点,然后把生成的波形上的各点的值存入以OUTPUT1指针开始的一段地址空间中。
四.实验步骤
1.实验准备:
-设置软件仿真模式;
-硬件连接;
-启动CCS。
2.打开工程,浏览程序工程目录
C:
\ICETEK\F2812\Lab0504-Convolve
3.编译并下载程序。
4.设置输入数据文件:
请在volume.c程序中有注释“breakpoint”的两行上设置probepoint和breakpoint:
设置方法是把光标指示到这一行上,按鼠标右键,从显示的菜单上分别选择probepoint和
breakpoint。
5.打开观察窗口:
-选择菜单View->Graph->Time/Frequency…进行如下设置:
-选择菜单View->Graph->Time/Frequency…进行如下设置:
-选择菜单View->Graph->Time/Frequency…进行如下设置:
-在弹出的图形窗口中单击鼠标右键,选择“ClearDisplay”。
6.设置波形输入文件,请按照如下设置:
-选择菜单File->FileI/O…,打开“FileI/O”窗口;单击“AddFile”按钮,在“FileInput”窗口中选择工程目录下的sine11.dat文件,单击“打开”按钮;在“Address”项中输入inp1_buffer,在“Length”项中输入64,在“WarpAround”项前加上选择标记,单击“Add
ProbePoint”按钮;
-在“Break/Probe/ProfilePoints”窗口中单击“ProbePoint”列表中的“Convolve.cline62<
NoConnection”,再单击“Connect”项尾部的展开按钮,在显示的展开式列表中选择列表末尾的“FILEIN:
D:
\..\SIN11.DAT”,单击“Replace”按钮,单击“确定”按钮。
-在“FileI/O”窗口中单击“确定”,完成设置。
-选择“File”菜单中的“FileI/O…”,打开“FileI/O”窗口;单击“AddFile”按钮,在“FileInput”窗口中选择工程目录下的sine11.dat文件,单击“打开”按钮;在“Address”项中输入inp2_buffer,在“Length”项中输入64,在“WarpAround”项前加上选择标记,单击“AddProbePoint”按钮;
-在“Break/Probe/ProfilePoints”窗口中单击“ProbePoint”列表中的“Convolve.cline63<
NoConnection”,再单击“Connect”项尾部的展开按钮,在显示的展开式列表中选择列表末尾的“FILEIN:
D:
\..\SIN11.DAT”,单击“Replace”按钮,单击“确定”按钮。
-在“FileI/O”窗口中单击“确定”,完成设置。
7.运行程序,观察结果:
-在“jishu++;//在此处加断点”上设置break断点。
-按F5键运行程序,待程序停留上面那条语句处;观察刚才打开的三个图形窗口,其中显示的是输入和输出的时域波形;
8.输入波形文件改成其他波形,如:
sin22.dat等,观察运行结果。
在修改输入波形文件时须首先将原文件删除;在重新运行程序时,先选择菜单“Debug”的“ResetCPU”、“Restart”、“GoMain”,再选择“Debug”中“Run”或按一下F5即可。
五、实验报告要求
(1)初步了解教学软件使用方法。
(2)对于程序设计实验,要求通过对验证性实验的练习,自行编制完整的实验程序,实现模拟。
六、思考题
思考线性卷积和圆周卷积的区别。
实验四基于MATLAB的FFT算法的使用
一、实验目的
(1)进一步加深DFT算法原理和基本性质的理解(因为FFT只是DFT的一种快速算法,所以FPT的运算结果必然满足DFT的基本性质)。
(2)熟悉FFT算法原理和FFT子程序的使用。
(3)学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确使用FFT。
二、实验原理
N点序列的DFT和IDFT变换定义式如下:
,
利用旋转因子
具有周期性,可以得到快速算法(FFT)。
在MATLAB中,可以用函数X=fft(x,N)和x=ifft(X,N)计算N点序列的DFT正、反变换。
三、实验内容和方法
1.对连续的单一频率周期信号按采样频率
采样,截取长度N分别选N=20和N=16,观察其DFT结果的幅度谱。
2.2N点实数序列
N=64。
用一个64点的复数FFT程序,一次算出
,并绘出
。
3.已知某序列
在单位圆上的N=64等分样点的Z变换为
用N点IFFT程序计算
,绘出和
。
四、实验预习要求
(1)预习实验原理。
(2)熟悉实验程序。
(3)思考课程设计实验部分程序的编写。
五、实验报告要求
(1)简述实验原理及目的。
(2)结合实验中所得给定典型序列幅频特性曲线,和理论结果比较,并分析说明
误差产生的原因以及用FFT作谱分析时有关参数的选择方法。
(3)总结实验所得主要结论。
(4)简要回答思考题。
六、思考题
如果周期信号的周期预先不知道,如何使用FFT进行谱分析?
实验五基于ICETEK-F2812-A的FFT算法分析
一、实验目的
1.掌握用窗函数法设计FFT快速傅里叶的原理和方法;
2.熟悉FFT快速傅里叶特性;
3.了解各种窗函数对快速傅里叶特性的影响。
二.实验设备
PC兼容机一台,操作系统为Windows2000(或Windows98,WindowsXP,以下默认为Windows2000),安装CodeComposerStudio3.1软件。
三.实验原理
1.FFT的原理和参数生成公式:
FFT并不是一种新的变换,它是离散傅立叶变换(DFT)的一种快速算法。
由于我们在计算DFT时一次复数乘法需用四次实数乘法和二次实数加法;一次复数加法则需二次实数加法。
每运算一个X(k)需要4N次复数乘法及2N+2(N-1)=2(2N-1)次实数加法。
所以整个DFT运算总共需要4N^2次实数乘法和N*2(2N-1)=2N(2N-1)次实数加法。
如此一来,计算时乘法次数和加法次数都是和N^2成正比的,当N很大时,运算量是可观的,因而需要改进对DFT的算法减少运算速度。
根据傅立叶变换的对称性和周期性,我们可以将DFT运算中有些项合并。
先设序列长度为N=2^L,L为整数。
将N=2^L的序列x(n)(n=0,1,……,N-1),按N的奇偶分成两组,也就是说我们将一个N点的DFT分解成两个N/2点的DFT,他们又重新组合成一个如下式所表达的N点DFT:
四.实验步骤
1.实验准备:
-设置软件仿真模式;
-启动CCS。
2.打开工程,浏览程序,工程目录为
C:
\ICETEK\F2812\DSP281x_examples\lab0503-FFT
3.编译并下载程序。
4.打开观察窗口:
*选择菜单View->Graph->Time/Frequency…进行如下图所示设置。
*选择菜单View->Graph->Time/Frequency…进行如下图所示设置。
*选择菜单View->Graph->Time/Frequency…进行如下图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号处理 数字信号 处理 实验 指导书