收藏 分享(赏)

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

上传人:精品资料 文档编号:10685062 上传时间:2019-12-27 格式:DOC 页数:22 大小:126.71KB
下载 相关 举报
信号与系统实验报告实验一 信号与系统的时域分析.doc_第1页
第1页 / 共22页
信号与系统实验报告实验一 信号与系统的时域分析.doc_第2页
第2页 / 共22页
信号与系统实验报告实验一 信号与系统的时域分析.doc_第3页
第3页 / 共22页
信号与系统实验报告实验一 信号与系统的时域分析.doc_第4页
第4页 / 共22页
信号与系统实验报告实验一 信号与系统的时域分析.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

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

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

3、具有两个或两个以上的独立变量。在信号与系统课程中,我们只关注这种只有一个独立变量(Independent variable)的信号,并且把这个独立变量统称为时间变量(Time variable) ,不管这个独立变量是否是时间变量。在自然界中,大多数信号的时间变量都是连续变化的,因此这种信号被称为连续时间信号(Continuous-Time Signals)或模拟信号(Analog Signals) ,例如前面提到的温度、压力和声音信号就是连续时间信号的例子。但是,还有一些信号的独立时间变量是离散变化的,这种信号称为离散时间信号。前面提到的股票市场的日收盘指数,由于相邻两个交易日的日收盘指数相隔

4、 24 小时,这意味着日收盘指数的时间变量是不连续的,因此日收盘指数是离散时间信号。而系统则用于对信号进行运算或处理,或者从信号中提取有用的信息,或者滤出信号中某些无用的成分,如滤波,从而产生人们所希望的新的信号。系统通常是由若干部件或单元组成的一个整体(Entity) 。系统可分为很多不同的类型,例如,根据系统所处理的信号的不同,系统可分为连续时间系统(Continuous-time system)和离散时间系统(Discrete-time system) ,根据系统所具有的不同性质,系统又可分为因果系统(Causal system)和非因果系统 (Noncausal system) 、稳定

5、系统(Stable system)和不稳定系统(Unstable system) 、线性系统(Linear system)和非线性系统(Nonlinear system) 、时变系统(Time-variant system )和时不变系统(Time-invariant system )等等。然而,在信号与系统和数字信号处理中,我们所分析的系统只是所谓的线性时不变系统,这种系统同时满足两个重要的基本性质,那就是线性性和时不变性,通常称为线性时不变(LTI )系统。1. 信号的时域表示方法1.1 将信号表示成独立时间变量的函数例如 x(t)=sin(t) 和 xn=n(0.5)nun分别表示一个连

6、续时间信号和一个离散时间信号。在 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 仿真连续时间信号和离散时间信号在

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

8、nerate a sinusoidal signal and draw its plotclear, % Clear all variablesclose all, % Close all figure windowsdt = 0.01; % Specify the step of time variablet = -2:dt:2; % Specify the interval of timex = sin(2*pi*t); % Generate the signalplot(t,x) % Open a figure window and draw the plot of x(t)title(

9、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(t) in

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

11、ta 和 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 plotclear, % Clear all variablesclose all, % Close all figure windowsn = -10:10; % Specify

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

13、3, .n=0% Program1_3% This program is used to generate a discrete-time sequence% and draw its plotclear, % Clear all variablesclose all, % Close all figure windowsn = -5:5; % Specify the interval of time, the number of points of n is 11.x = 0, 0, 0, 0, 0.1, 1.1, -1.2, 0, 1.3, 0, 0; % Generate the sig

14、nalstem(n,x,.) % Open a figure window and draw the plot of xngrid on,title (A discrete-time sequence xn)xlabel (Time index n)由于在程序的 stem(n,x,.) 语句中加有.选项,因此绘制的图形中每根棒条线的顶端是一个实心点。如果需要在序列的前后补较多的零的话,可以利用函数 zeros(),其语法为:zeros(1, N):圆括号中的 1 和 N 表示该函数将产生一个一行 N 列的矩阵,矩阵中的所有元素均为零。利用这个矩阵与序列 xn进行组合,从而得到一个长度与 n 相

15、等的向量。例如,当 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 plotclear, % Clear all variablesclose all, % Close all figure windowsn = -5:5;

16、 % Specify the interval of timex = zeros(1,4), 0.1, 1.1, -1.2, 0, 1.3, zeros(1,2); % Generate the sequencestem (n,x,.) % Open a figure window and draw the plot of xngrid on,title (A discrete-time sequence xn)xlabel (Time index n)离散时间单位阶跃信号 un定义为1.20,1nu离散时间单位阶跃信号 un除了也可以直接用前面给出的扩展函数来产生,还可以利用 MATLAB

17、内部函数 ones(1,N) 来实现。这个函数类似于 zeros(1,N),所不同的是它产生的矩阵的所有元素都为 1。值得注意的是,利用 ones(1,N) 来实现的单位阶跃序列并不是真正的单位阶跃序列,而是一个长度为 N 单位门(Gate)序列,也就是 un-un-N。但是在一个有限的图形窗口中,我们看到的还是一个单位阶跃序列。在绘制信号的波形图时,有时我们需要将若干个图形绘制在图一个图形窗口中,这就需要使用 MATLAB 的图形分割函数 subplot(),其用法是在绘图函数 stem 或 plot 之前,使用图形分割函数 subplot(n1,n2,n3),其中的参数 n1,n2 和 n

18、3 的含义是,该函数将把一个图形窗口分割成 n1xn2 个子图,即将绘制的图形将绘制在第 n3 个子图中。2.3 信号的时域变换2.3.1 信号的时移信号的时移可用下面的数学表达式来描述:设一个连续时间信号为 x(t),它的时移 y(t) 表示为:y(t) = x(t - t0) 1.3其中,t 0 为位移量。若 t0 为正数,则 y(t)等于将 x(t)右移 t0 秒之后的结果。反之,若 t0 为负数,则 y(t)等于将 x(t)左移 t0 秒之后的结果。在 MATLAB 中,时移运算与数学上习惯表达方法完全相同。程序 Program1_5 对给定一个连续时间信号 x(t) = e-0.5t

19、u(t),对它分别左移 2 秒钟和右移2 秒钟得到信号 x1(t) = e-0.5(t+2)u(t+2)和 x2(t) = e-0.5(t-2)u(t-2)。% Program1_5% This program is used to implement the time-shift operation% on a continuous-time signal and to obtain its time-shifted versions% and to draw their plots.clear,close all,t = -5:0.01:5;x = exp(-0.5*t).*u(t); %

20、 Generate the original signal x(t)x1 = exp(-0.5*(t+2).*u(t+2); % Shift x(t) to the left by 2 second to get x1(t)x2 = exp(-0.5*(t-2).*u(t-2); % Shift x(t) to the right by 2 second to get x2(t)subplot(311)plot(t,x) % Plot x(t)grid on,title (Original signal x(t)subplot (312)plot (t,x1) % Plot x1(t)grid

21、 on,title (Left shifted version of x(t)subplot (313)plot (t,x2) % Plot x2(t)grid on,title (Right shifted version of x(t)xlabel (Time t (sec)2.3.2 信号的时域反褶对一个信号 xn的反褶运算在数学上表示为yn = x-n 1.4这种反褶运算,用 MATLAB 实现起来也是非常简单的。有多种方法可以实现信号的反褶运算。方法一,修改绘图函数 plot(t,x)和 stem(n,x)中的时间变量 t 和 n,即用-t 和-n 替代原来的 t 和 n,这样绘制出

22、来的图形,看起来就是原信号经时域反褶后的版本。方法二,直接利用原信号与其反褶信号的数学关系式来实现。这种方法最符合信号反褶运算的实际意义。方法三,使用 MATLAB 内部函数 fliplr()来实现信号的反褶运算。其用法如下 :y = fliplr(x):其中 x 为原信号 x(t)或 xn,而 y 则为 x 的时域反褶。需要说明的是,函数 fliplr()对信号作时域反褶,仅仅将信号中各个元素的次序作了一个反转,这种反转处理是独立于时间变量 t 和 n 的。因此,如果信号与其时间变量能够用一个数学函数来表达的话,那么建议将时间变量 t 和 n 的范围指定在一个正负对称的时间区间即可。2.3.

23、3 信号的时域尺度变换信号 x(t)的时域尺度变换在数学描述为y(t) = x(at), 1.5其中 a 为任意常数。根据 a 的不同取值,这种时域尺度变换对信号 x(t)具有非常不同的影响。当 a = 1 时,y(t) = x(t);当 a = -1 时, y(t) = x(-t),即 y(t)可以通过将 x(t)反褶运算而得到;当 a 1 时,y(t) = x(at),y(t)是将 x(t)在时间轴上的压缩而得到;当 0 0 时图形右移,t % Q1_3clear, % Clear all variablesclose all, % Close all figure windowsdt =

24、 0.01; % Specify the step of time variablet = 0:dt:2; % Specify the interval of timex = exp(-2*t); % Generate the signalgrid onplot(t,x) % Open a figure window and draw the plot of x(t)title(Sinusoidal signal x(t)xlabel(Time t (sec)信号 x(t)=e-2t 的波形图0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 200.20.40.60.81

25、1.21.41.61.82 Sinusoidal signal x(t)Time t (sec)Q1-4: 将实验原理中所给的单位冲激信号和单位阶跃信号的函数文件在 MATLAB 文件编辑器中编写好,并分别以文件名 delta 和 u 存入 work 文件夹中以便于使用。抄写函数文件 delta 如下: Q1-4 抄写函数文件 delta 如下: function y = delta(t)dt = 0.01;y = (u(t)-u(t-dt)/dt;抄写函数文件 u 如下:% Unit step functionfunction y = u(t)y = (t=0); % y = 1 for t

26、 0, else y = 0Q1-5:修改程序 Program1_4,并以 Q1_5 为文件名存盘,利用 axis()函数,将图形窗口的横坐标范围改为-2n5,纵坐标范围改为-1.5 x 1.5。修改 Program1_4 后得到的程序 Q1_5 如下: %Q1_5clear, % Clear all variablesclose all, % Close all figure windowsn = -5:5; % Specify the interval of timex = zeros(1,4), 0.1, 1.1, -1.2, 0, 1.3, zeros(1,2); % Generate

27、 the sequencestem (n,x,.) % Open a figure window and draw the plot of xngrid on,axis(-2,5,-1.5,1.5)此处粘贴图形-2 -1 0 1 2 3 4 5-1.5-1-0.500.511.5Q1-6: 仿照前面的示例程序的编写方法,编写一个 MATLAB 程序,以 Q1_6 为文件名存盘,使之能够在同一个图形窗口中的两个子图中分别绘制信号 xn=0.5|n| 和 x(t)=cos(2t)u(t)-u(t-3)。要求选择的时间窗能够表现出信号的主要部分(或特征) 。编写的程序 Q1_6 如下:%Q1_6cl

28、ear, % Clear all variablesclose all, % Close all figure windowsn = -5:5; % Specify the interval of timex =0.5.abs(n); % Generate the sequencet=-2:0.01:5;y=cos(2*pi*t).*u(t)-u(t-3);subplot(2,1,1),stem (n,x,.) ; % Open a figure window and draw the plot of xngrid on;title (A discrete-time sequence xn)x

29、label (Time index n)subplot(2,1,2),plot (t,y) ;信号 xn=0.5|n| 的波形图和信号 x(t)=cos(2t)u(t)-u(t-3)的波形图-5 -4 -3 -2 -1 0 1 2 3 4 500.51 A discrete-time sequence xnTime index n-2 -1 0 1 2 3 4 5-1-0.500.51Q1-7: 根据示例程序的编程方法,编写一个 MATLAB 程序,以 Q1_7 为文件名存盘,由给定信号x(t) = e-0.5tu(t)求信号 y(t) = x(1.5t+3),并绘制出 x(t) 和 y(t)

30、的图形。编写的程序 Q1_7 如下:% Q1_7clear, % Clear all variablesclose all, % Close all figure windowsdt = 0.01; % Specify the step of time variablet = -5:dt:5; % Specify the interval of timex = exp(-0.5*t).*u(t); % Generate the signaly=exp(-0.75*t-1.5).*u(1.5*t+3);subplot(2,1,1),plot(t,x); % Open a figure windo

31、w and draw the plot of x(t)grid on;title(Sinusoidal signal x(t);xlabel(Time t (sec);subplot(2,1,2),plot(t,y);grid on;title(Sinusoidal signal y(t);xlabel(Time t (sec);信号 x(t)的波形图 信号 y(t) = x(1.5t+3) 的波形图-5 -4 -3 -2 -1 0 1 2 3 4 500.51 Sinusoidal signal x(t)Time t (sec)-5 -4 -3 -2 -1 0 1 2 3 4 500.51

32、Sinusoidal signal y(t)Time t (sec)Q1-8: 给定一个离散时间信号 xn = un un-8,仿照示例程序 Program1_5,编写程序Q1_8,产生 xn的左移序列 x1n = xn+6和右移序列 x2n = xn-6,并在同一个图形窗口的三个子图中分别绘制这三个序列的图形。编写的程序 Q1_8 如下:% Q1_8clear,close all,n = -20:20;x = u(n)-u(n-8); % Generate the original signal x(t)x1 = u(n+6)-u(n-2); % Shift x(t) to the left

33、 by 2 second to get x1(t)x2 = u(n-6)-u(n-14); % Shift x(t) to the right by 2 second to get x2(t)subplot(311),stem(n,x); % Plot x(t)grid on;title (Original signal x(n);subplot (312),stem (n,x1); % Plot x1(t)grid on;title (Left shifted version of x(n);subplot (313),stem (n,x2); % Plot x2(t)grid on;tit

34、le (Right shifted version of x(n);xlabel (Index n );信号波形图-20 -15 -10 -5 0 5 10 15 2000.51 Original signal x(n)-20 -15 -10 -5 0 5 10 15 2000.51 Left shifted version of x(n)-20 -15 -10 -5 0 5 10 15 2000.51 Right shifted version of x(n)Index n 此处粘贴图形Q1-9: 编写程序 Q1_9,使之能够接受以键盘方式输入的定义在不同时间段的两个不同连续时间信号并完成卷

35、积运算,分别绘制这两个信号及其卷积的结果的图形,图形按照2 2 分割成四个子图。编写的程序 Q1_9 如下:% Q1_9clear, close all;dt=0.01;t = -5:0.01:5;x =sin(2*t );h =cos(3*t);r=dt*conv(x,h);subplot(221), plot(t,x),title(x(t);subplot(223), plot(t,h),title(h(t);subplot(122), t = -10:0.01:10;plot(t,r); title(r(t);信号 x (t)、h(t)和 x (t)*h(t)的波形图-5 0 5-1-0

36、.500.51 x(t)-5 0 5-1-0.500.51 h(t)-10 -5 0 5 10-1-0.8-0.6-0.4-0.200.20.40.60.81 r(t)Q1-10:给定两个离散时间序列xn = 0.5nun-un-8hn = un-un-8编写程序 Q1_10,计算它们的卷积,并分别绘制 xn、hn和它们的卷积 yn的图形。编写的程序 Q1_10 如下:% Q1_10clear;close all;n0 = -2; n1 = 10; n = n0:n1;x = 0.5.n.*u(n)-u(n-8);h = u(n)-u(n-8);y = conv(x,h); % Compute

37、 the convolution of x(t) and h(t)subplot(311)stem(n,x), grid on, title(Signal x(n), axis(n0,n1,-0.2,1.2)subplot(312)stem(n,h), grid on, title(Signal h(n), axis(n0,n1,-0.2,1.2)subplot(313)n = 2*n0:2*n1; % Again specify the time range to be suitable to the % convolution of x and h.stem(n,y), grid on,

38、title(The convolution of x(n) and h(n), xlabel(Index n)信号 xn、hn和 yn的波形图-2 0 2 4 6 8 1000.51Signal x(n)-2 0 2 4 6 8 1000.51Signal h(n)-5 0 5 10 15 20012 The convolution of x(n) and h(n)Index nQ1-11 已知一个序列为otherwisnnx,04编写 MATLAB 程序 Q1_11,能够将 xn以 N = 8 为周期进行周期延拓得到一个周期为 N =8 的周期序列 yn,并分别绘制 xn和 yn图形。编写的

39、程序 Q1_11 如下:写的程序 Q1_11 如下:clear, close all;n = -20:20;x=n.*u(n)-u(n-4);N = 8; y = 0;for k = -2:2;y =y+(n-k*N).*u(n-k*N)-u(n-k*N-4);endsubplot(211),stem(n,x); grid on, title(Signal x(n),subplot(212),stem(n,y); grid on, title(Signal y(n),信号 xn的波形图 信号 yn的波形图此处粘贴图形 此处粘贴图形-20 -15 -10 -5 0 5 10 15 200123

40、Signal x(n)-20 -15 -10 -5 0 5 10 15 200123 Signal y(n)Q1-12 仿照范例程序 Program1_7,编写程序 Q1_12,计算并绘制由如下微分方程表示的系统在输入信号为 x(t) = (e-2t - e-3t)u(t)时的零状态响应和你手工计算得到的系统零状态响应曲线。)(82)(3)(2 txtydtty手工计算得到的系统零状态响应的数学表达式是:编写的程序 Q1_12 如下: 用 MATLAB 绘制的手工计算的系统响应粘帖用 MATLAB 绘制的手工计算的系统响应执行程序 Q1_12 得到的系统响应此处粘帖执行程序 Q1_12 得到的系统响应四、实验报告要求1、按要求完整书写你所编写的全部 MATLAB 程序2、详细记录实验过程中的有关信号波形图(存于自带的 U 盘中) ,图形要有明确的标题。全部的 MATLAB 图形应该用打印机打印,然后贴在本实验报告中的相应位置,禁止复印件。3、实事求是地回答相关问题,严禁抄袭。本实验完成时间: 年 月 日

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报