ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:137.67KB ,
资源ID:5216307      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5216307.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(信号与系统实验指导书.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

信号与系统实验指导书.docx

1、信号与系统实验指导书信号与系统实验指导书合肥工业大学电物学院电子科学与技术系MATLAB简介MATLAB是MATHWORKS公司推出的一套高性能的数值计算与可视化软件,它集数值分析,矩阵运算,信号处理和图形显示于一体,构成了一个方便的、界面友好的用户环境。其强大的扩展功能为各个领域的应用提供了基础。由各个领域的专家学者相继推出了MATLAB工具箱,其中主要有信号处理(signal processing),控制系统(control system),神经网络(neural network),图像处理(image processing),鲁棒辨识(system identification),最优化

2、(optimisation),分析与综合(analysis and synthesis),模糊逻辑(fuzzy logic),小波(wavelet),样条(spline)等工具箱。可以毫不夸张的说,如果您以后想在信号处理、控制、信息学方面有所发展,那么您就必须应该首先接触MATLAB这一“巨人肩上的工具”。在此,请同学们认真学习以下内容。1、 基本操作简介单击桌面上的MATLAB快捷方式即可打开如下的操作界面。左下角的是Commang History窗口,记录了曾经输入的命令,可以方便的查询或复制曾经输入的命令。右边的是Command Window,用于命令输入和运行,我们运行程序和观察结果都

3、在此窗口中。1.1简单的数学运算使用MATLAB进行简单的数学运算如同在计算器上的操作一样。如:要计算:4+3;只要在MATLAB命令窗口内输入4+3(回车),便会得到答案:ans=71.2变量定义:MATLAB中变量的命名规则如下:变量名必须以字母开头,之后可以是任意字母、数字或下划线;变量名是大小写敏感的,变量A和a是不一样的;变量名不能超过19个字符,第19个字符以后的字符将被忽略。举例,输入a=4(回车),就定义了一个变量a,并赋以初值4。MATLAB中还包括一些特殊的变量:如ans(MATLAB中默认变量)、pi(圆周率)、inf(无穷大)、i或j(复数中的虚数单位)1.3注释和标点

4、%后的语句为注释语句。 “;”放在语句之后,表示不出现运行结果。如:输入a=4+3;(回车),系统命令窗口不会出现结果。如果去掉“;”系统会给出答案:a=7。1.4复数的定义:举例a=1+2*i1.5数学函数MATLAB所支持的部分常用函数在下面列出,其中的大部分可以数学方式书写。举例:输入x=sqrt(2)/2(回车)系统给出结果x=0.7071此命令得到的值,注意:MATLAB只对弧度操作。本实验中可能用到的MATLAB的基本信号函数:sin正弦Cot余切acot反余切log自然对数csc余割Asin反正弦expE为底的指数log22为底的对数cos余弦acos反余弦log1010为底的对

5、数sqrt平方根tan正切atan反正切pow22的幂abs绝对值1.6取整函数:在运算中经常要遇到将浮点数或分数截断变成整数的问题。MATLAB提供了几种不同的函数,实现这种截断问题,要注意其区分。fix(x):是取浮点数的整数部分;floor(x);是向下截断,取比x小的最近整数;ceil(x):是向上截断,取比x大的最近整数;round(x);是取最近的整数,如小数部分为0.5则取离0远的最近的整数;frac(x):则是取分数的真分数部分(不能用于浮点数)。例如:xsym(-5/2)则fix(x) floor(x) round(x) ceil(x) frac(x)分别为 2 3 3 2

6、1/22数组的定义和运算数组运算主要是针对多个数执行同样的计算而运用的。在MATLAB中,以一种非常直观的方式来处理数组。2.1数组的定义:(1)直接定义:例如n=1 2 3 4 5 n= 1 2 3 4 5(2)利用first:increment:last来创建数组。表示创建一个从first开始,每个元素间隔incerment,直到last的数组。例如 t1=-0.5;dt=0.001;t2=7;t=t1:dt:t2;定义了一个变量t数组。在我们的实验中,自变量都是这样的方式来定义的。当increment缺省时,默认为1。例如n=1:5定义了数组1 2 3 4 5。(3)利用linespac

7、e创建数组格式:linespace(first_value, last_value, number)创建一个以first_value开始,以last_value结束,包含有number个数据元素的数组。(4)利用logspace创建一个对数分割的数组格式:logspace(first_value, last_value, number)创建一个以10first_value开始,以10last_value结束,包含有number个数据元素的数组。2.2数组与标量的四则运算:数组与标量的四则运算格式与标量间运算类似,它是将数组中的每个元素与标量进行加、减、乘、除运算,但除法运算时标量只能作除数。例

8、如 rectRC=rectRC+sin(2*k+1)*t-atan(2*k+1)*RC)/(2*k+1)*sqrt(1+(2*k+1)*RC)2);表示:,其中。上面的运算中,t是一个数组,其它都是标量。2.3数组间的四则运算:数组间进行四则运算时,要求参与运算的数组必须具有相同的维数。加、减、乘、是按元素与元素的方式进行的。加减运算与标量运算相同,但乘除运算的符号则是“.*”和“./”或“.”(两种除号的关系是a./b=b.a)。例如a=1 3 4; b=2 3 1; c=a.*b c= 2 9 4例如 x=0.02*(1+0.4*cos(60*pi*t)./(0.0001+t.2);表示因

9、为分子分母都是数组,所以使用“./”。2.4数组的幂运算:数组的幂运算符号为“.”,表示每个元素分别进行幂运算。例如a=1 3 4; c=a.2 c= 1 9 162.5数组的函数运算:数组的函数运算也是对每个元素分别进行函数运算。对标量适用的函数对数组也同样适用。2.6向量运算:当数组作为向量进行运算时,有点乘、叉乘和混合积运算。点乘使用函数dot(A, B)来实现,叉乘使用函数cross(A, B)来实现,混合积则通过组合点乘和叉乘来实现。3、矩阵运算MATLAB名字由MATrix和 LABoratory 两词的前三个字母组合而成。这是因为MATLAB是以矩阵运算为基础的一种语言,其所有的

10、运算都是基于矩阵的。前面说的数组也就是一个1n的矩阵。例如a=1 3 5; size(a)ans =1 3size(a, 2)ans= 33.1 矩阵的定义:矩阵的定义方法与数组相同,只不过不同行之间需要用分号或回车隔开。举个例子:矩阵,它的MATLAB定义方法为a=1 2 3;4 5 6;7 8 9(回车),您就可以看到这个矩阵了。(也可使用a=1:1:3;4:1:6;7:1:9或者a=1:3;4:6;7:9)矩阵的另一个生成方法是使用Matrix Editor工具,主要用于生成大型矩阵。3.2 矩阵与标量的四则运算与数组相同。3.3 矩阵间的四则运算矩阵间的加减与数组相同。矩阵间的乘除分为

11、两种:一是与数组运算相同,采用按元素运算的方法。此时要求两个矩阵的大小完全相同,运算符采用“.*”和“.”以及“./”或“.”。二是按线性代数的方法运算。此时要求进行相乘的两矩阵要有相同的公共维。矩阵乘法符号是“*”。矩阵的除法符号是“/”或“”,用于寻找使Ax=b的解。举例: a. 又例如 3.4 本实验需用到的矩阵相关函数:(1)zeros(n):产生一个nn的零矩阵; zeros(1, n):产生一个长度为n的零数组; zeros(size(X)(X为一数组):产生一与X等长的零数组。(2)sum(A):若A为数组,则对数组中所有元素求和;若A为矩阵,则对矩阵按列求和,返回比A维数低1的

12、矩阵。(3)size(X):返回矩阵的维数。数组被看作1n矩阵。所以要将数组X的长度赋给整数N时应使用size(X, 2)。例: x=1 2 3;4 5 6; y=1 3 5 7 9; size(x) ans = 2 3 asize(y) a = 1 5 b=size(y,2) b = 5(4)X Ymeshgrid(x, y):用x和y数组构造矩阵X和Y。X的每行都是数组x,列数与数组y的大小相同。Y的每行都是数组y,列数与数组x的大小相同。4、信号的MATLAB表示众所周知,计算机只能处理数字信号,时域连续信号也是数字信号模拟的结果。因此,我们先从离散信号(数字)信号说起。4.1离散信号与

13、系统在此之前,要先介绍一下逻辑运算符和关系运算符。逻辑运算符见表二:表二逻辑运算符说明&|与或非&是逻辑“与”操作。意思是&符号两边的集合取交集。如:“(x0)&(x4)”意思是取范围在0x4)&(x4和x0范围的x。“”是逻辑“非”操作。意思是对表达式做“非”运算。如:“1”取值为0,“0”取值为1。关系运算符见表三:表三关系操作符说明 = = =小于小于或等于大于大于或等于等于不等于在数字信号处理中,所有的信号都是离散(时间)信号,因此首先应解决在MATLAB中如何表示离散信号。设一个序列信号x(n)=,x(-1),x(0),x(1),。由于MATLAB对下标的约定为从1开始递增,因此要表

14、示x(n),一般应采用两个矢量,如:n=-3 -2 -1 0 1 2 3 4 5 x=1 -1 3 2 0 4 5 2 1这表示了一个含9个采样点的矢量:x(n)=x(-3),x(-2),x(-1),x(0),x(1),x(2), x(5)=1,-1,3,2,0,4,5,2,1。通常情况下,序列值从x(0)开始,因此一个N-1点序列x(n)=x(0),x(1),x(N-1)可简单的表示为:x(n)=x(0),x(1),x(N-1)。函数的表示:单位取样序列:n=1:N x=n= =1“= =”是关系运算符,表示如果符号两边的表达式相等,总的表达式为1,如果不相等表达式值为0。上式表达的意思是:

15、时间域自变量n定义为从1到N,X为自变量n上的函数,它只在n=1的时候取值为1,其它为0。单位阶跃序列:n=n1:n2 x=(n-n0)=0注意:“=”与“=n0时函数x的值为1。4.2连续信号与系统由于计算机只能处理离散信号不能直接处理连续信号,因此只能由离散信号去模拟连续信号。只要离散信号取的一系列离散点的间隔足够小,就可以把此信号作为连续信号来使用。让我们看一段MATLAB程序:(“%”号后为注释语句)t=0:0.001:5;%取t为0至5的彼此间隔为0.001的一系列点。x=sin(t); %为t的正弦函数。(“;”表示在主窗口中不显示运算结果)plot(t,x) %绘制x的图形。(“

16、plot”命令表示绘制图形,基本格式为:%plot(t自变量,函数)5脚本文件和函数MATLAB除了可以通过Command Window中运行相关语句外,还可以将命令写成脚本文件(.M文件)集中执行,或者称为MATLAB编程。通常是使用M文件编辑器将要运行的程序或函数编辑好,需要运行或调用时在命令窗口输入源文件的名字或函数名称即可运行。5.1 M文件的分类M文件分为两种,即函数式M文件和脚本式M文件。函数式M文件的第一句是以function语句开头的,脚本式M文件则是命令的简单叠加。脚本式M文件运行产生的所有变量都是全局变量,而函数式M文件中所有变量除特别声明的外,都是局部变量。举例:下面的函

17、数式M文件定义了单位斜变函数ur(t)。function u=ur(t)u=0.*(t=0); 这样在Command Window中或其他M文件中就可以通过ur(t)来构建其他函数或变量,例如x=3*ur(t)-12*ur(t-0.3)+9*ur(t-0.4);定义了一个三角脉冲。5.2 M文件的程序结构M文件的程序结构分为:顺序结构、循环结构、分支结构。这些结构不仅可以在M文件中使用,也可以在Command Window中输入运行。我们的实验中可能用到的结构有:(1) for循环结构举例:下面的语句通过循环用正弦波合成方波rectwave=zeros(size(t);for k=0:m re

18、ctwave=rectwave+sin(2*k+1)*t)/(2*k+1);end;(2) if-elseif-else-end分支结构举例:下面的语句根据ns的奇偶将xpf数组的前半部分和后半部分调换,并存入xf数组中n2=ceil(ns/2);n1=floor(ns/2);if n1=n2xf(1:n2)=xpf(n2+1:ns);xf(n2+1:ns)=xpf(1:n2);elsexf(1:n2-1)=xpf(n2:ns);xf(n2:ns)=xpf(1:n2-1);end6、信号曲线的绘制6.1 plot()函数基本格式:plot(X1,Y1),以数组X1为横坐标,以Y1为纵坐标绘制曲

19、线图。这是最基本的用法,更复杂的用法请参看help文档。要在一幅图中绘制多条曲线可以使用plot(X1,Y1,X1,Y2,X1,Y3,)。例如t1=-0.5;dt=0.001;t2=7;t=t1:dt:t2;plot(t, sin(t);即打开了曲线绘制窗口,在0.57的区间内绘制sin(t)波形。在曲线显示窗口中右键点击可以改变曲线显示的属性。在Edit菜单中可以改变坐标轴的属性。在File菜单中用Save As可以将曲线保存为一个图形文件(建议选择.bmp或.jpg格式)。6.2 stem()函数Stem函数用于绘制火柴杆图,在我们的实验中用于绘制周期信号的频谱。基本用法:stem(X,Y

20、),以数组X为横坐标,以Y为纵坐标绘制火柴杆图。曲线属性、坐标属性的改变方法以及保存图形的方法与plot函数相同。举例:stem(f, xf) %在频域绘制xf的火柴杆图7本实验可能用到的MATLAB系统命令:(在命令窗口中输入)help主题 帮助demo 运行演示程序who 显示当前变量clear 清空工作区间的变量和函数quit/exit 退出MATLAB实验一 周期矩形脉冲的合成一、实验目的:本实验的目的是使学生熟悉MATLAB环境,并通过编程加深对信号的合成和分解的理解。 二、实验内容:1、利用正弦波序列构造周期矩形脉冲,观察吉布斯现象;2、计算周期矩形脉冲通过RC低通滤波器后的波形(

21、选做)。三、实验原理:1、方波合成一个周期为T的周期矩形脉冲信号可以分解为一系列正弦波信号。设周期矩形脉冲的周期为T,在0T之间。则f(t)可分解为:,式中。我们通过累加,即可由正弦波序列构造一个周期矩形脉冲。由于实际运算中不可能求和到无穷大,通常只对k求和到比较大即可,本实验要求分别绘制出k3、20、100时的合成波形。2、周期矩形脉冲通过RC低通滤波器的波形如图所示的电路,由电路分析知道,输出信号与输入信号之比为:。若输入输入信号为sin(t)则输出信号为。对于周期矩形脉冲通过这个低通滤波器后的波形,可以分别计算每个正弦分量通过滤波器的波形,然后累加。四、实验要求1、利用正弦波合成一个周期

22、为2的周期矩形脉冲。分别绘制出k3、20、100时的近似曲线,观察吉布斯过冲现象。2、计算RC分别等于0.1、0.3、1、3时,上述周期矩形脉冲通过RC低通滤波后的波形(取k500)。五、实验步骤1、首先定义时间t的序列,本实验可取0.5t7,间隔0.001;2、定义一个零数组以备保存方波波形;3、利用循环语句计算近似波形,循环次数分别为3、20、100;4、利用plot语句绘制曲线,并观察吉布斯现象。5对于RC滤波,更改循环语句对不同RC取值计算波形并绘制。六、思考题解释吉布斯现象出现的原因?用余弦波合成三角波,观察有无吉布斯过冲,为什么?实验二 时域连续信号的卷积一、实验目的:本实验的目的

23、是使学生加深对卷积的理解。 二、实验内容:1、利用软件动态观察两个信号的卷积过程;2、编程计算两个信号的卷积。三、实验原理:卷积的概念贯穿于这门课程的始终,因此非常重要。从教材中,我们知道两个信号x(t)与h(t)进行卷积,x(t)可以看作输入系统的信号,而h(t)是系统的冲激响应。它们卷积的结果就是系统的输出。两个信号卷积的公式为:,其图形卷积过程为先将h(t)反褶、平移再和x(t)相乘,最后积分。在本实验中,利用ctcongui程序可以给学生动态的演示输入两个信号x(t)与h(t)的卷积过程。由于MATLAB处理的都是矩阵和数组,为了利用MATLAB近似的计算两个信号的卷积,需要对上述公式

24、进行近似。设序列间隔为d,则m d(m从负无穷到正无穷),同样tn dt第二个等号后边的求和两个离散序列x(n)与h(n)的离散卷积。MATLAB中有专门的函数conv(A,B)用于计算离散序列A、B的卷积。因此只要知道x(t)和h(t)中时间序列的间隔dt,即可求出。四、实验要求1、利用程序ctconvgui观察两个脉冲波形的图形卷积过程。2、编程计算f1(t)2(u(t-0.5)u(t-2)和f2(t)(2x+2)(u(x+1)u(x2)的卷积f3=f1*f2,并绘制f1、f2和f3的曲线。五、实验步骤1、在Command Windows中输入ctconvgui(回车),即可运行图形卷积演

25、示过程。2、使用M文件编辑器或记事本定义一个台阶函数us(t);function u = us(t)u = 0.*(t=0);3、将us.M所在目录添加到MATLAB的路径中(使用MATLAB窗口中的File菜单下的SetPath),或将us.M放在MATLAB的路径所包含的目录;4、首先定义f1和f2的时间t序列,本实验可取2t4,间隔0.01;5、定义函数f1(t)和f2(t);6、利用函数conv(),计算f3;7、显示f1、f2、f3的波形,需注意此时f3的定义域为48。实验三 连续信号的傅立叶变换一、实验目的:利用MATLAB求解并绘制一周期信号的频谱,并重新合成。 二、实验内容:1

26、、求解一周期信号的傅立叶变换;2、从变换后的频谱中的低频部分恢复信号。(选做)三、实验原理:周期信号的傅立叶变换公式为:式中。最后一项的求和即是离散序列的傅立叶变换,有专门的MATLAB函数fft()用于计算它。因此。不过需要注意的是,fft()出来的结果中频谱的小于零部分存在数组的后半部分,大于零部分存在前半部分,需要自行调整。对于逆变换: 这里只选取了f(t)的有限个低频分量(相当于理想低通滤波)。对于后面的求和运算可以利用meshgrid构建F(n)、n和t矩阵,最后利用sum()对列求和获得f(t)。四、实验要求1、利用fft()函数对一个周期为2.5脉冲信号求频谱。在一个周期内x(t

27、)3ur(t)-12ur(t-0.3)+9ur(t-0.4),ur(t)为单位斜变信号。并绘制频谱。2、用频率小于5的频谱合成信号。五、实验步骤1、首先定义时间t的序列和x(t);2、利用fft()求x(t)的傅立叶变换;3、将前半部分和后半部分调换得到对称的频谱X(f);4、定义频率f的序列,序列长度N应和t序列相同,df1/(Ndt);5、利用stem()函数绘制x(t)的频谱;6、对x(t)的频谱进行截断7、利用meshgrid构建矩阵xff、nn和tm,其行长度与要得到的时间序列相同,列长度与f序列相同。8、计算合成后的近似信号。实验四 信号的抽样和恢复一、实验目的:通过实验加深对抽样

28、和采样定理的理解。 二、实验内容:1、利用fft()函数计算一个脉冲信号的傅立叶变换频谱;2、对信号进行理想冲击抽样,并计算抽样后的频谱;3、由抽样后的频谱,采用理想低通滤波恢复信号。三、实验原理:1、傅立叶变换与周期函数的傅立叶变换一样,在显示时也需要将频谱的前半部分和后半部分调换2、理想冲击抽样在冲击出现的那一点,信号变为f(t0)(t-t0),其余点变为0,f(t)f(nTs)。(Ts为抽样时间间隔,Ts1/fs。)抽样后的频谱在频域变成以fs为周期的函数,。作为近似,可以将若干个相互错位fs的F()进行错位相加,得到抽样后的频谱。3、抽样信号的恢复此时只要取出一个fsfs内的频谱,利用傅立叶逆变换,即可恢复信号。由,利用MATLAB中的ifft()函数即可恢复f(t)。需注意的是,ifft()函数要求F(f)的形式应是与fft(t)出来的形式相同,即两头是低频分量,中间是高频分量。四、实验要求1、计算并绘制脉冲信号(其带宽为B50)的波形和频谱;2、分别取fs100和200,绘制抽样后的信号和频谱,进行对比;3、对上面两种抽样频率下的抽样频谱,采用理想低通滤波(fc对应分别50和100)恢复信号,对比恢复后的信号。五、实验步骤1、首先定义时间t的序列,本实验可取0.4tfs的频谱分量;9、利用ifft()函数恢复信号,并绘制波形;10、改变抽样频率重复49。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1