信号与系统实验报告实验一 信号与系统的时域分析.docx

上传人:牧羊曲112 文档编号:3081185 上传时间:2023-03-10 格式:DOCX 页数:34 大小:49.88KB
返回 下载 相关 举报
信号与系统实验报告实验一 信号与系统的时域分析.docx_第1页
第1页 / 共34页
信号与系统实验报告实验一 信号与系统的时域分析.docx_第2页
第2页 / 共34页
信号与系统实验报告实验一 信号与系统的时域分析.docx_第3页
第3页 / 共34页
信号与系统实验报告实验一 信号与系统的时域分析.docx_第4页
第4页 / 共34页
信号与系统实验报告实验一 信号与系统的时域分析.docx_第5页
第5页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《信号与系统实验报告实验一 信号与系统的时域分析.docx》由会员分享,可在线阅读,更多相关《信号与系统实验报告实验一 信号与系统的时域分析.docx(34页珍藏版)》请在三一办公上搜索。

1、信号与系统实验报告实验一 信号与系统的时域分析实验一 信号与系统的时域分析 一、实验目的 1、熟悉和掌握常用的用于信号与系统时域仿真分析的MATLAB函数; 2、掌握连续时间和离散时间信号的MATLAB产生,掌握用周期延拓的方法将一个非周期信号进行周期信号延拓形成一个周期信号的MATLAB编程; 3、牢固掌握系统的单位冲激响应的概念,掌握LTI系统的卷积表达式及其物理意义,掌握卷积的计算方法、卷积的基本性质; 4、掌握利用MATLAB计算卷积的编程方法,并利用所编写的MATLAB程序验证卷积的常用基本性质; 掌握MATLAB描述LTI系统的常用方法及有关函数,并学会利用MATLAB求解LTI系

2、统响应,绘制相应曲线。 基本要求:掌握用MATLAB描述连续时间信号和离散时间信号的方法,能够编写MATLAB程序,实现各种信号的时域变换和运算,并且以图形的方式再现各种信号的波形。掌握线性时不变连续系统的时域数学模型用MATLAB描述的方法,掌握卷积运算、线性常系数微分方程的求解编程。 二、实验原理 信号一般都是随某一个或某几个独立变量的变化而变化的,例如,温度、压力、声音,还有股票市场的日收盘指数等,这些信号都是随时间的变化而变化的,还有一些信号,例如在研究地球结构时,地下某处的密度就是随着海拔高度的变化而变化的。一幅图片中的每一个象素点的位置取决于两个坐标轴,即横轴和纵轴,因此,图像信号

3、具有两个或两个以上的独立变量。 在信号与系统课程中,我们只关注这种只有一个独立变量的信号,并且把这个独立变量统称为时间变量,不管这个独立变量是否是时间变量。 在自然界中,大多数信号的时间变量都是连续变化的,因此这种信号被称为连续时间信号或模拟信号,例如前面提到的温度、压力和声音信号就是连续时间信号的例子。但是,还有一些信号的独立时间变量是离散变化的,这种信号称为离散时间信号。前面提到的股票市场的日收盘指数,由于相邻两个交易日的日收盘指数相隔24小时,这意味着日收盘指数的时间变量是不连续的,因此日收盘指数是离散时间信号。 而系统则用于对信号进行运算或处理,或者从信号中提取有用的信息,或者滤出信号

4、中某些无用的成分,如滤波,从而产生人们所希望的新的信号。系统通常是由若干部件或单元组成的一个整体。系统可分为很多不同的类型,例如,根据系统所处理的信号的不同,系统可分为连续时间系统和离散时间系统,根据系统所具有的不同性质,系统又可分为因果系统和非因果系统、稳定系统和不稳定系统、线性系统和非线性系统、时变系统和时不变系统等等。 然而,在信号与系统和数字信号处理中,我们所分析的系统只是所谓的线性时不变系统,这种系统同时满足两个重要的基本性质,那就是线性性和时不变性,通常称为线性时不变系统。 1. 信号的时域表示方法 1.1将信号表示成独立时间变量的函数 例如 x(t)=sin(t) 和 xn=n(

5、0.5)nun 分别表示一个连续时间信号和一个离散时间信号。在MATLAB中有许多内部函数,可以直接完成信号的这种表达,例如: sin:正弦信号 cos:余弦信号 exp:指数信号 1.2用信号的波形图来描述信号 用函数曲线表示一个信号,图1.1就是一个连续时间信号和一个离散时间信号的波形图。 图1.1 连续时间信号与离散时间信号的波形图 1.3将信号用一个数据序列来表示 对于离散时间信号,还可以表示成一个数的序列,例如: xn=., 0.1, 1.1, -1.2, 0, 1.3, . n=0 在信号与系统和数字信号处理课程中,上述三种信号的描述方法是经常要使用的。 2 用MATLAB仿真连续

6、时间信号和离散时间信号 在MATLAB中,无论是连续时间信号还是离散时间信号,MATLAB都是用一个数字序列来表示信号,这个数字序列在MATLAB中叫做向量(vector)。通常的情况下,需要与时间变量相对应。 如前所述,MATLAB有很多内部数学函数可以用来产生这样的数字序列,例如sin、cos、exp等函数可以直接产生一个按照正弦、余弦或指数规律变化的数字序列。 2.1连续时间信号的仿真 程序Program1_1是用MATLAB对一个正弦信号进行仿真的程序,请仔细阅读该程序,并在计算机上运行,观察所得图形。 % Program1_1 % This program is used to ge

7、nerate a sinusoidal signal and draw its plot clear, % Clear all variables close all, % Close all figure windows dt = 0.01; % Specify the step of time variable t = -2:dt:2; % Specify the interval of time x = sin(2*pi*t); % Generate the signal plot(t,x) % Open a figure window and draw the plot of x(t)

8、 title(Sinusoidal signal x(t) xlabel(Time t (sec) 常用的图形控制函数 axis(xmin,xmax,ymin,ymax):图型显示区域控制函数,其中xmin为横轴的显示起点,xmax为横轴的显示终点,ymin为纵轴的显示起点,ymax为纵轴的显示终点。 有时,为了使图形具有可读性,需要在所绘制的图形中,加上一些网格线来反映信号的幅度大小。MATLAB中的grid on/grid off可以实现在你的图形中加网格线。 grid on:在图形中加网格线。 grid off:取消图形中的网格线。 x = input(Type in signal x(

9、t) in closed form:) 在信号与系统课程中,单位阶跃信号u(t) 和单位冲激信号(t) 是二个非常有用的信号。它们的定义如下 t=-d(t)dt=1t0 1.1(a) d(t)=0,1,u(t)=0,t0 1.1(b) t0这里分别给出相应的简单的产生单位冲激信号和单位阶跃信号的扩展函数。产生单位冲激信号的扩展函数为: function y = delta(t) dt = 0.01; y = (u(t)-u(t-dt)/dt; 产生单位阶跃信号的扩展函数为: % Unit step function function y = u(t) y = (t=0); % y = 1 fo

10、r t 0, else y = 0 请将这二个MATLAB函数分别以delta 和u为文件名保存在work文件夹中,以后,就可以像教材中的方法使用单位冲激信号(t) 和单位阶跃信号u(t)。 2.2离散时间信号的仿真 程序Program1_2用来产生离散时间信号xn=sin(0.2n)。 % Program1_2 % This program is used to generate a discrete-time sinusoidal signal and draw its plot clear, % Clear all variables close all, % Close all fig

11、ure windows n = -10:10; % Specify the interval of time x = sin(0.2*pi*n); % Generate the signal stem (n,x) % Open a figure window and draw the plot of xn title (Sinusoidal signal xn) xlabel (Time index n) 请仔细阅读该程序,比较程序Program1_1和Program1_2中的不同之处,以便自己编程时能够正确使用这种方法方针连续时间信号和离散时间信号。 程序Program1_3用来仿真下面形式

12、的离散时间信号: xn=., 0.1, 1.1, -1.2, 0, 1.3, . n=0 % Program1_3 % This program is used to generate a discrete-time sequence % and draw its plot clear, % Clear all variables close all, % Close all figure windows n = -5:5; % Specify the interval of time, the number of points of n is 11. x = 0, 0, 0, 0, 0.1,

13、 1.1, -1.2, 0, 1.3, 0, 0; % Generate the signal stem(n,x,.) % Open a figure window and draw the plot of xn grid on, title (A discrete-time sequence xn) xlabel (Time index n) 由于在程序的stem(n,x,.) 语句中加有.选项,因此绘制的图形中每根棒条线的顶端是一个实心点。 如果需要在序列的前后补较多的零的话,可以利用函数zeros,其语法为: zeros(1, N):圆括号中的1和N表示该函数将产生一个一行N列的矩阵,矩

14、阵中的所有元素均为零。利用这个矩阵与序列xn进行组合,从而得到一个长度与n相等的向量。 例如,当 xn= 0.1, 1.1, -1.2, 0, 1.3 时,为了得到程序Program1_3中的序列, n=0 可以用这个MATLAB语句x = zeros(1,4) x zeros(1, 2) 来实现。用这种方法编写的程序如下: % Program1_4 % This program is used to generate a discrete-time sinusoidal signal % and draw its plot clear, % Clear all variables close

15、 all, % Close all figure windows n = -5:5; % Specify the interval of time x = zeros(1,4), 0.1, 1.1, -1.2, 0, 1.3, zeros(1,2); % Generate the sequence stem (n,x,.) % Open a figure window and draw the plot of xn grid on, title (A discrete-time sequence xn) xlabel (Time index n) 离散时间单位阶跃信号un定义为 un=1,0,

16、n0 1.2 n 1时,y(t) = x(at),y(t)是将x(t)在时间轴上的压缩而得到; 当0 a 1时,y(t) = x(at),y(t)是将x(t)在时间轴上的扩展而得到; 当 -1 a 0时,y(t) = x(at),y(t)是将x(t)在时间轴上的扩展同时翻转而得到; 当 a 0 时图形右移,t 0时图形左移。 4. 计算两个信号重叠部分的乘积x()h(t-); 5. 完成相乘后图形的积分。 对于两个时限信号,按照上述的五个步骤,作卷积积分运算时,关键是正确确定不同情况下的积分限。只要正确地确定了积分限都能得到正确定积分结果。尽管如此,在时域中计算卷积积分,总体上来说是一项比较困

17、难的工作。 借助MATLAB的内部函数conv可以很容易地完成两个信号的卷积积分运算。其语法为:y = dt*conv(x,h)。其中x和h分别是两个作卷积运算的信号,y为卷积结果。 对于定义在不同时间段的两个时限信号x(t),t0 t t1,和h(t),t2 t t3。 如果用y(t)来表示它们的卷积结果,则y(t)的持续时间范围要比x(t)或h(t)要长,其时间范围为t0+t2 t t1+t3。这个特点很重要,利用这个特点,在处理信号在时间上的位置时,可以很容易地将信号的函数值与时间轴的位置和长度关系保持一致性。 根据给定的两个连续时间信号x(t) = tu(t)-u(t-1)和h(t)

18、= u(t)-u(t-1),编写程序,完成这两个信号的卷积运算,并绘制它们的波形图。范例程序如下: % Program1_6 % This program computes the convolution of two continuou-time signals clear;close all; t0 = -2; t1 = 4; dt = 0.01; t = t0:dt:t1; x = u(t)-u(t-1); h = t.*(u(t)-u(t-1); y = dt*conv(x,h); % Compute the convolution of x(t) and h(t) subplot(2

19、21) plot(t,x), grid on, title(Signal x(t), axis(t0,t1,-0.2,1.2) subplot(222) plot(t,h), grid on, title(Signal h(t), axis(t0,t1,-0.2,1.2) subplot(212) t = 2*t0:dt:2*t1; % Again specify the time range to be suitable to the % convolution of x and h. plot(t,y), grid on, title(The convolution of x(t) and

20、 h(t), axis(2*t0,2*t1,-0.1,0.6), xlabel(Time t sec) 在有些时候,做卷积和运算的两个序列中,可能有一个序列或者两个序列都非常长,甚至是无限长,MATLAB处理这样的序列时,总是把它看作是一个有限长序列,具体长度由编程者确定。实际上,在信号与系统分析中所遇到的无限长序列,通常都是满足绝对可和或绝对可积条件的信号。因此,对信号采取这种截短处理尽管存在误差,但是通过选择合理的信号长度,这种误差是能够减小到可以接受的程度的。若这样的一个无限长序列可以用一个数学表达式表示的话,那么,它的长度可以由编程者通过指定时间变量n的范围来确定。 例如,对于一个单边

21、实指数序列xn = 0.5nun,通过指定n的范围为0 n 100,则对应的xn的长度为101点,虽然指定更宽的n的范围,xn将与实际情况更相符合,但是,注意到,当n大于某一数时,xn之值已经非常接近于0了。对于序列xn = 0.5nun,当n = 7时,x7 = 0.0078,这已经是非常小了。所以,对于这个单边实指数序列,指定更长的n的范围是没有必要的。当然,不同的无限长序列具有不同的特殊性,在指定n的范围时,只要能够反映序列的主要特征就可以了。 3.4 用线性常系数微分方程描述LTI系统 线性常系数微分方程或差分方程是描述LTI系统的另一个时域模型。一个连续时间LTI系统,它的输入信号x

22、(t)输出信号y(t)关系可以用下面的微分方程来表达 dky(t)Mdkx(t) ak 1.12 =bkkkdtdtk=0k=0N式1.12中,max (N, M)定义为系统的阶。式1.12描述了LTI系统输入信号和输出信号的一种隐性关系。为了求得系统响应信号的显式表达式,必须对微分方程和差分方程求解。 在MATLAB中,一个LTI系统也可以用系统微分方程的系数来描述,例如,一个LTI连续时间系统的微分方程为 d2y(t)dy(t)+3+2y(t)=x(t) 2dtdtMATLAB则用两个系数向量num = 1和den = 1 3 2来描述该系统,其中num和den分别表示系统微分方程右边和左

23、边的系数,按照微分运算的降阶排列。 MATLAB的内部函数impulse,step,initial,lsim 可以用来计算并绘制连续时间LTI系统的单位冲激响应,单位阶跃响应,零输入响应和任意信号作用于系统的零状态响应。这些函数的用法描述如下: h= impulse(num, den, T) 和 impulse(num, den, T) s = step(num, den, T) 和 step(num, den, T) y = lsim(num, den, x, t) 和 lsim (num, den, x, t) 函数impulse,step用来计算由num和den表示的LTI系统的单位冲激

24、响应和单位阶跃响应,响应的时间范围为0T,其中den和num分别为系统微分方程左右两边的系数向量,T为指定的响应的终点时间。h和s的点数默认值为101点。由此可以计算时间步长为dt = T/(101-1)。不带返回值的函数如impulse(num, den, T)和step(num, den, T)将直接在屏幕上绘制系统的单位冲激响和单位阶跃响应曲线。带返回值的函数如y = lsim(num, den, x, t)和y = lsim(num, den, x, t),用来计算由num和den表示的LTI系统在输入信号x作用下的零状态响应。其中t为指定的时间变化范围,x为输入信号,它们的长度应该是

25、相同的。如带返回参数y,则将计算的响应信号保存在y中,若不带返回参数y,则直接在屏幕上绘制输入信号x和响应信号y的波形图。 例如,编写程序,计算并绘制由下面的微分方程表示的系统的单位冲激响应h(t),单位阶跃响应s(t)。 d2y(t)dy(t)+3+2y(t)=8x(t) dtdt2MATLAB范例程序如下: % Program1_7 % This program is used to compute the impulse response h(t) and the step response s(t) of a % continuous-time LTI system clear, cl

26、ose all; num = input(Type in the right coefficient vector of differential equation:); den = input(Type in the left coefficient vector of differential equation:); t = 0:0.01:8; x = input(Type in the expression of the input signal x(t):); subplot(221), impulse(num,den,8); subplot(222), step(num,den,8)

27、 subplot(223), plot(t,x); subplot(224), y=lsim(num,den,x,t);plot(t,y) 三、实验内容及步骤 实验前,必须首先阅读本实验原理,读懂所给出的全部范例程序。实验开始时,先在计算机上运行这些范例程序,观察所得到的信号的波形图。并结合范例程序应该完成的工作,进一步分析程序中各个语句的作用,从而真正理解这些程序。 实验前,一定要针对下面的实验项目做好相应的实验准备工作,包括事先编写好相应的实验程序等事项。 Q1-1:修改程序Program1_1,将dt改为0.2,再执行该程序,保存图形,看看所得图形的效果如何? dt = 0.01时的信号

28、波形 dt = 0.2时的信号波形 Sinusoidal signal x(t)10.80.60.40.20-0.2-0.4-0.6-0.8-1-2-1.5-1-0.500.5Time t (sec)11.52Sinusoidal signal x(t)10.80.60.40.20-0.2-0.4-0.6-0.8-1-2-1.5-1-0.500.5Time t (sec)11.52这两幅图形有什么区别,哪一幅图形看起来与实际信号波形更像? 答: Q1-2:修改程序Program1_1,并以Q1_2为文件名存盘,产生实指数信号x(t)=e-2t。 要求在图形中加上网格线,并使用函数axis控制图

29、形的时间范围在02秒之间。然后执行该程序,保存所的图形。 修改Program1_1后得到的程序Q1_2如下: % Q1_2 clear, % Clear all variables close all, % Close all figure windows dt = 0.01; % Specify the step of time variable t = 0:dt:2; % Specify the interval of time x = exp(-2*t); % Generate the signal plot(t,x) % Open a figure window and draw the plot of x(t) title(Sinusoidal signal x(t) xlabel(Time t (sec) axis(0,2,0,2) grid on 信号x(t)=e-0.5t的波形图 Sinusoidal signal x(t)21.81.61.41.210.80.60.40.2000.20.40.60.811.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号