数字信号处理-实验-1-2_第1页
数字信号处理-实验-1-2_第2页
数字信号处理-实验-1-2_第3页
数字信号处理-实验-1-2_第4页
数字信号处理-实验-1-2_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数字信号处理实 验 讲 义邱 选 兵太原科技大学应科学院物理系光电工程研究所2013-111数字信号处理实验讲义目 录目 录I实验要求2MATLAB简介2实验一 熟悉MATLAB环境及简单序列运算10实验二 信号、系统及系统响应17 21 实验要求要求每位同学自己按照相关教程,安装MATLAB软件,版本目前为R2009。每个人自己根据题目要求,完成实验,并按照数字信号处理实验模板完成实验报告。在实验报告中,重点是源程序和实验的结果(画图,并分析)。试验完成后请按照“自己的班级学号+姓名+实验序号”格式将实验报告命名,并发送到中,主题为“班级学号+姓名+实验序

2、号”。如光信1班1号陈子寒,文件名为:“光信101+陈子寒+实验1.doc”。MATLAB简介MATLAB是由美国Math Works公司推出的软件产品。“MATLAB”是Matrix Laboratory的缩写,意即“矩阵实验室”。MATLAB是一完整的并可扩展的计算机环境,是一种进行科学和工程计算的交互式程序语言。它的基本数据单元是不需要指定维数的矩阵,它可直接用于表达数学的算式和技术概念,而普通的高级语言只能对一个个具体的数据单元进行操作。因此解决同样的数值计算问题,使用MATLAB要比使用BASIC、FORTRAN和C等语言提高效率许多倍。许多人赞誉它为万能的数学“演算纸”。MATLA

3、B采用开放式的环境,你可以读到它的源码,了解它的算法,并能改变当前的函数或增添你自己编写的函数。MATLAB是一种非常流行的计算机语言,许多重要学术刊物上发表的论文均是用MATLAB来分析计算以及绘制出各种图形。它还是一有力的教学工具,它在大学的线性代数课程以及其它领域的高一级课程的教学中,已成为标准的教学工具。现今MATLAB的发展已大大超出了“矩阵实验室”的范围,在许多国际一流专家学者的支持下,Math Works公司还为MATLAB配备了涉及到自动控制、信息处理、计算机仿真等种类繁多的工具箱(Tool Box),这些工具箱有:数理统计、信号处理、系统辨识、最优化、稳健(Robust)等等

4、。近年来一些新兴的学科方向,Math Works公司也很快的开发了相应的工具箱,例如:神经网络、模糊逻辑等。一、MATLAB语言MATLAB语言由一些简单的命令组成,这些命令即为基本的语句,它们可以在窗口下执行,也可以由命令串以及控制语句和说明语句组成一程序。程序以文本格式存放在计算机中,冠以后缀“.M”,通常也称之为M文件。执行程序时,只需在MATLAB窗口下输入去掉后缀的文件名即可。下面介绍MATLAB语言的主要特点:1. 变量MATLAB最基本、也是最重要的功能就是进行实数或复数矩阵运算。因向量和标量均可作为特殊的矩阵来处理,因而也可以很方便的进行向量和标量的运算。MATLAB的基本变量

5、均代表一矩阵。矩阵可以由语句和函数产生,也可以由外部的数据文件输入,还可以由键盘输入一些小的矩阵。例如在出现提示符“”后,我们键入一33的矩阵并赋予变量AA=1 3 5 ; 2 4 6 ; 7 8 9矩阵的元素直接排列在方括号中,一行中的元素用空格或者是逗号分开,行与行之间用分号隔开。在键入回车键后屏幕上将显示: A= 1 3 5 2 4 6 7 8 9单个矩阵元素可以用括号中的下标来表示,例如上述矩阵的元素A(1,1)=1, A(2,2)=4, A(3,3)=9。下标可以是一个向量或一个子矩阵,例如A(:,3)代表第三列元素组成的向量;A(1:3, 1:2)代表一32的子矩阵。2. 基本操作

6、符一般的加“+”、减“”、乘“*”、除“/”、幂“”等操作符在MATLAB中有着不同的意义,这些操作均针对矩阵操作,即代表矩阵的加、减、乘、除以及乘方运算。除此而外,还有点乘“.*”表示两个矩阵的对应元素乘;点除“./”表示两个矩阵的对应元素相除;右除“”表示用右边的矩阵除以左边的矩阵,AB等效于A的逆左乘B矩阵。这些操作符同样适用于标量操作,如前所述这些元素间的操作可以是复数运算,虚部的单位为i=sqrt(-1),sqrt(.)是MATLAB定义的平方根函数。幂次通常用标量表示,例如AP表示A的P次方。而“.”计算对应元素的幂,A.P为两个大小相同的矩阵进行操作,P中的每一元素作为A中对应元

7、素的幂次,P为标量是一特例,它完成与AP相同的操作。MATLAB完成矩阵的共轭转置用“”表示,例如: -1; 2; 3 ans= -1 2 3 (矩阵的转置操作符为“.”,不过对实数矩阵而言,转置与共轭转置结果一致。)其它的关系运算与逻辑运算操作符和普通的高级语言没有多大差别。3. 输入、输出语句MATLAB可以用load语句输入磁盘中存储的数据。数据可以用ASC码按行、列存放在文件中,执行load命令后,MATLAB用此文件名(不包括后缀)作为当前的变量名。MATLAB本身的存储格式二进制的“.MAT”文件也使用load命令装入。save命令将工作空间中的变量以二进格式或ASC格式存入到磁盘

8、文件中。对于其它特定格式的数据文件,MATLAB提供了像C语言一样的输入、输出语句。例如,fopen、fread、fwrite等。一般的输入、输出应优先选择load和save命令来完成。4. 库函数像其它高级语言一样,MATLAB提供了一批基本的数学函数,如正弦(sin)、指数(exp)、开方(sqrt)等。在矩阵运算方面它也提供了许多基本的函数,例如矩阵求逆(inv)、求行列式(det)、LU分解(lu)、求对角阵(diag)等等。另外,还提供了一批特殊数学函数,例如贝塞尔函数(bassel)、第一类完全椭圆积分(ellipk)等。MATLAB的各种类型的工具箱提供了适合于各种专门用途的库函

9、数。用户也很容易编写一些自己常用的库函数添加到MATLAB的函数库中。5. 作图语句MATLAB的作图功能非常强,它可以绘制二维图形(plot,stem)、三维图形(mesh)、等值线图(contour)、极坐标(polar)以及直方图(hist)等。除了可以作图外,还可以对图形加文本注释(text)、题头(title)、x轴或y轴标注(xlabel, ylabel)以及增加网格(grid)等。6. 控制语句MATLAB有着和其它高级语言相类似的控制语句,例如,循环(for)、中止循环(break)、条件(if, while)等等。不过这些语句要谨慎使用,因为,MATLAB是对数组进行操作,很

10、多时候可以不用控制语句,用了控制语句会使程序的执行速度减慢。7. 帮助语句helphelp命令很有用,它为用户提供了一切联机帮助信息。在命令窗口中直接键入“help”命令可取得信息。如:键入“help eig”可得到特征函数的使用信息;键入“help ”显示如何使用方括号;而键入“help signal”将提供所有信号处理工具包中的有关函数的信息。8. 用于数字信号处理的工具包Signal Toolbox它包含数字信号处理常用的滤波器设计、傅立叶变换、Z变换等等MATLAB函数。如设计IIR滤波器相关函数: buttord、butter、cheb1ord、cheb2ord、ellipord、c

11、heby1、cheby2、ellip。设计FIR滤波器相关函数: fir1、fir2、firls、remezord、remez窗函数: bartlett、blackman、hamming、hanning、kaiser傅立叶变换相关函数: fft、ifft频率响应相关函数: freqz、freqs频率变换相关函数: lp21p、lp2hp、lp2bp、lp2bs二、算例例1 求矩阵的特征向量和特征值。A=0 1 0;1 0 3;5 2 1;X D=eig(A)X= -0.3887+0.0965i -0.3887-0.0965i -0.1674 0.4191-0.6436i 0.4191+0.64

12、36i -0.6371 0.2142+0.4515i 0.2142-0.4515i -0.7524D= -1.4029+1.3078i 0 0 0 -1.4029-1.3078i 0 0 0 3.8058第一句构成一33的矩阵A ,以分号结尾的语句,MATLAB将不显示中间结果。第二句计算A矩阵特征向量和特征值,它调用函数eig返回一对33的矩阵X和D,满秩矩阵X的列为特征向量,对角矩阵D的对角元素为特征值。由于A为非对称的实矩阵,X和D均为复矩阵。例2 编写一函数,可对任一向量的每一元素增加一固定的偏移值,并绘出所得向量的图形。设向量a=1 2 3 4 5 6 7 5 3 7,偏移量为b=3

13、。可编写一名为vp1.m的文件如下: function vp1(a,b) c=a+b; plot(c) grid程序中“function vp1(a,b)”表示将M程序定义成名为vp1的函数,参数a为向量,b 为偏移量。运行: a=1 2 3 4 5 6 7 5 3 7; b=3; vp1(a,b)即可显示以下图形。例3 给定一因果系统H(z)=(1-z)/(1-z+0.9z),求出并绘出H(z)的幅频响应与相频响应。这道题可使用MATLAB信号处理(signal)工具包中的函数freqz来计算。它的一般形式是h,w=freqz(b,a),其中b是由z分子多项式系数构成的数组,a是由z分母多项

14、式系数构成的数组,h是返回的复数形式的频率响应数组,w是由对应于h的各个数字角频率构成的数组。用MATLAB编写的程序如下:b=1, -1; %分子多项式系数a=1, -sqrt(2), 0.9; %分母多项式系数h, w=freqz(b, a); %计算频率响应am=20*log10(abs(h); %计算幅频响应并绘图subplot(2, 1, 1)plot(w, am)ph=angle(h); %计算相频响应并绘图subplot(2, 1, 2)plot(w, ph)结果显示如下:三、SIMULINK仿真Simulink是MATLAB软件中对动态系统进行建模、仿真和分析的一个软件包,它支

15、持线性和非线性系统、连续时间系统、离散时间系统、连续和离散混合系统。另外,Simulink提供了友好的图形用户界面(GUI),模型由模块组成的框图来表示,使用起来很方便。1. Simulink基本操作(1)运行Simulink:在MATLAB命令窗口中直接键入“Simulink”。(2)Simulink模块操作。模块是建立Simulink模型的基本单元,模块的基本操作包括:选取模块、复制和删除模块、模块的参数和属性设置、模块外型的调整、模块的连接等。2. Simulink基本模块(1)Sources模块包括:Signal Generator(信号发生器)、Sine Wave(正弦波发生器)、S

16、tep(阶跃信号)、Random Number(高斯分布的随机信号)、Uniform Random Number(均匀分布的随机信号)、Band-Limited White Noise(带限白噪声)等。(2)Sinks模块包括:Scope(示波器)、XY Graph(XY图)、Display(实时数值显示)等。(3)Discrete模块包括:Discrete Filter(IIR、FIR数字滤波器)、Discrete Transfer Fun(离散传输函数)、Discrete Zero-Pole(离散零极点模型)等。(4)Math模块包括:Sum(求和)、Product(求积或商)、Abs(求

17、模)、Complex to Magnitude-Angle(求复数的复值、相角)。(5)Signal & System模块包括:In1(输入端口)、Out1(输出端口)、Subsystem(子系统)等(6)其它基本模块包括其它各种功能的应用模块。3. Simulink仿真建立起系统模型之后,就可以对模型进行动态仿真。进行仿真可以使用Simulink模型仿真窗口中Simulation下的命令。仿真运行之前一般需要对仿真参数进行设置。仿真参数设置包括Solver、Workspace I/O、Diagnostics、Advanced和Real-Time Workshop等。具体设置方法请参阅帮助文件

18、。实验一 熟悉MATLAB环境及简单序列运算一、实验目的(1)熟悉MATLAB的主要操作命令;(2)学会简单的矩阵输入和数据读写;(3)掌握简单的绘图命令;(4)用MATLAB编程并学会创建函数。二、实验内容认真阅读讲义前面的“MATLAB简介”和本实验的“实验说明及程序示例”部分,在MATLAB环境下选择简介和说明中的部分例子重做一遍,体会各条命令或指令的含义。在熟悉了MATLAB的基本命令的基础上,完成以下实验。1. 序列(一维数组)、矩阵(多维数组)的输入和特殊序列、矩阵的产生。(1)输入A=1 2 3 4, B=1, 2, 3, 4, C=1; 2; 3; 4, D=1 2 3; 4

19、5 6; 7 8 9, E=1, 2, 3; 4, 5, 6; 7, 8, 9, 比较各个变量的结果及特点。(2)采用“”形式的指令(语句)产生一个等差序列,该序列A的初值为a、终值为b(或略小于b的一个值)、等差为x(若等差为1则可缺省该值)。产生一个n=0, 1, 2, , 15的序列;改变a, x, b的值,比较各序列的结果与特点。(3)利用ones, zeros, randn函数分别产生各个元素为“全1、全0、正态分布随机数”的序列和矩阵(行序列就是1N的矩阵,而列序列就是N1的矩阵)。改变函数参数,比较各个结果。2. 序列的简单运算。输入A=1 2 3 4, B=5 6 7 8, 求

20、C=A+B, D=A-B, E=A.*B, F=A./B, H=A.3, I=A.B, 比较各个序列的结果(注意体会对应“点运算”的特点),并用stem语句画出各个序列。3. 矩阵的简单运算。输入A=1 2 3; 4 5 6; 7 8 9, B=3 1 6; 7 9 2; 5 8 4, 求C=A+B, D=A-B, E=A*B, F=A .* B, G=A/B, H=A ./ B, I=A2, J=A .2, K=A .B。比较各个矩阵的结果(注意体会对应“点运算”的特点)。4. 应用函数length、size求取序列和矩阵的大小。先输入或生成一个序列和矩阵,用上述函数求序列和矩阵的大小,体会

21、二者的作用和不同之处。* 5. 采用rand函数分别产生两个长度不同的序列A、B。(1)修改序列A部分元素的值:将A的中间45个元素的值修改为“1”;(2)将A、B中长度较长的序列截短,使二者长度一致;(3)将A、B中长度较短的序列在后面补零加长,使二者长度一致;(4)求序列C:长度为A的一半,且各元素为A、B前一半元素的对应相加。6. 绘出下列时间函数的图形(注意:t的取值点选取合理,使绘出的图形恰当!),对图形的X轴Y轴以及图形上方均须加上适当的标注:(1);(2)。7. 编写函数weight_add(x1, x2, w),实现两个序列x1(n)、x2(n)的加权和运算:。函数参数中,x1

22、、x2为输入序列,w为权值。给定两个序列x1、x2,绘出原序列和函数执行后得到的序列图形。* 8. 编写函数stepshift(n0, n1, n2),实现u(n-n0), n1n08等) 需要执行的命令组 end ”(6) 程序中的分支结构:(即if else end结构) “if 表达式 (如x+y8等)表达式为真时需要执行的命令组end ”或者 “if 表达式 (如x+y8等)表达式为真时需要执行的命令组else表达式为假时需要执行的命令组end ”(7) ones, zeros, rand, randn 特殊矩阵产生函数ones(n, m) 产生一个大小为nm的全1矩阵;zeros(n

23、, m) 产生一个大小为nm的全0矩阵;rand(n, m) 产生一个大小为nm的数值在01之间均匀分布的随机矩阵;randn(n, m) 产生一个大小为nm的正态分布随机矩阵。(8) length, size 求取序列和矩阵的大小l=length(x) 求取序列x的长度,返回值赋给l;n, m=size(x) 求取矩阵x的大小,n, m分别为矩阵的行和列的大小。(9) 作图语句:(a) stem 绘制离散序列图形stem(y) 作序列y的图形(图形的X轴为序列y的位置点)。如 t=0 : pi/20 : 2*pi; y=sin(t);stem(y)图形为:stem(t,y) 以t为X轴、y为

24、Y轴作序列y的图形。 如 t=0 : pi/20 : 2*pi; y=sin(t);stem(t,y)图形为:(b) plot 绘制曲线图形plot(y)作序列(或数组、向量)y的曲线图形 (图形的X轴为y的位置点)。如 t=0 : pi/20 : 2*pi; y=sin(t);plot(y)图形为:plot(t,y) 以t为X轴、y为Y轴作y的曲线图形。 如 t=0 : pi/20 : 2*pi; y=sin(t);plot(t,y)图形为:(10) 图形标注语句xlabel(标注文字) 给X轴加标注;ylabel(标注文字) 给Y轴加标注;title(标注文字) 给图形加题注;grid 给

25、图形增加网格。如 t=0 : pi/20 : 2*pi; y=sin(t);plot(t,y)xlabel( t / rad )ylabel( y )title(正弦函数)grid 图形如下。(11) subplot 划分图形窗口及定位当前图形位置subplot(m, n, k) 将图形窗口划分成mn块子区域,按从左到右、从上到下的顺序将当下图形显示在第k块子区域。(12) figure 创建新的图形窗口figure 创建一个新的图形窗口,并称为当前图形窗口,当下绘制的图形将显示在该图形窗口中。实验二 信号、系统及系统响应一、实验目的(1)熟悉信号的基本运算;(2)熟悉时域离散系统的时域特性,

26、利用卷积运算观察分析系统的时域特性;(3)观察离散系统的频率响应特性、零极点分布、单位脉冲响应。二、实验内容1. 编写MATLAB程序实现下列序列,并用stem语句绘出各个序列:(1)x(n)=0.8, 0n15;(2)x(n)=3cos(0.125n+0.2)+2sin(0.25n+0.1), 0n15;(3)将(2)中的x(n)以16为周期进行周期延拓为周期序列,即满足,绘出四个周期(即绘出);*(4)将(2)中的x(n) 以10为周期进行周期延拓为周期序列,即满足,绘出四个周期(即绘出)。2. 利用conv函数计算序列的线性卷积,绘出相应序列的图形:(1),;将计算结果与笔算结果作对比,

27、验证之。(2),;比较与的时域特性,注意二者有无差别,解释所得结果。(3)信号,0n15,系统;观察系统响应图形,判断其非零值区间长度是否与理论结果一致?3. 求系统零极点图、系统频率响应(幅频响应和相频响应)、系统单位脉冲响应:(1);(2);(3)(4)对于(1)和(2),求取不同长度的单位脉冲响应,观察比较他们的特点,解释之。观察(3)和(4)的系统函数和系统频率响应中的幅频响应特性,比较、说明他们的特点。*4. 自编MATLAB程序,实现两个有限长序列的线性卷积运算。*5. 试分析矩形信号的频率特性(即求信号的DTFT分析),作出幅频特性和相频特性图。三、思考题(1)比较实验内容第1题中(3)和(4)两小题的结果,试说明对于周期性信号,应当如何选取采样频率和采样区间,才能保证周期扩展后与原信号保持一致。(2)对于由两个子系统级联或并联的系统,如何用MATLAB计算它们的幅频响应与相频响应?(3)对于有限长序列,如何用MATLAB计算其DTFT?四、实验报告要求(1)按实验步骤附上实验程序和实验

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论