12月6日信号与系统实验指导书.doc

上传人:laozhun 文档编号:4142758 上传时间:2023-04-07 格式:DOC 页数:82 大小:2.07MB
返回 下载 相关 举报
12月6日信号与系统实验指导书.doc_第1页
第1页 / 共82页
12月6日信号与系统实验指导书.doc_第2页
第2页 / 共82页
12月6日信号与系统实验指导书.doc_第3页
第3页 / 共82页
12月6日信号与系统实验指导书.doc_第4页
第4页 / 共82页
12月6日信号与系统实验指导书.doc_第5页
第5页 / 共82页
点击查看更多>>
资源描述

《12月6日信号与系统实验指导书.doc》由会员分享,可在线阅读,更多相关《12月6日信号与系统实验指导书.doc(82页珍藏版)》请在三一办公上搜索。

1、信 号 与 系 统实验指导书长春工程学院电气与信息学院电工电子实验教学中心二八年二月十日目 录MATLAB软件仿真实验部分1实验一 信号的基本运算1实验二 周期信号的傅里叶级数及Gibbs现象12实验三 信号抽样及信号重建19实验四 信号与系统复频域分析26EL-SS-III实验箱硬件实验部分31一、硬件资源31二、软件安装及使用34三、实验系统部分40实验一 滤波器41实验二 一阶电路的瞬态响应45实验三 一阶电路的零输入响应、零状态响应及完全响应50实验四 二阶电路的瞬态响应52实验五 二阶网络函数的模拟55实验六 方波信号的分解59实验七 方波信号的合成62实验八 抽样定理64实验九 数

2、据采集69附录一 实验结果参考70附录二 AD/DA卡调试说明83MATLAB软件仿真实验部分实验一 信号的基本运算一、实验目的1、熟悉掌握常用的用于信号与系统时域仿真分析的MATLAB函数。2、掌握用MATLAB描述连续时间信号和离散时间信号的方法,能够编写MATLAB程序进行仿真。3、熟悉实现各种信号的时域变换和运算的原理和方法,并在MATLAB环境下仿真。4、利用延拓的方法将时限信号变成一个周期函数。5、利用MATLAB的卷积工具实现两个信号的卷积运算。二、实验原理1、在信号与系统课程中,单位阶跃信号u(t) 和单位冲激信号(t) 是二个非常有用的信号。它们的定义如下 1.1(a) 1.

3、1(b)这里分别给出相应的简单的产生单位冲激信号和单位阶跃信号的扩展函数。产生单位冲激信号的扩展函数为: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函数分别以delta 和u为文件名保存在work文件夹中,以后,就可以像教材中的方法使用单位冲激信号(t) 和单位阶跃信号u(t)。2、离散时间单位阶跃信号un定义为 1.2离散时间单位阶跃

4、信号un除了也可以直接用前面给出的扩展函数来产生,还可以利用MATLAB内部函数ones(1,N) 来实现。这个函数类似于zeros(1,N),所不同的是它产生的矩阵的所有元素都为1。值得注意的是,利用ones(1,N) 来实现的单位阶跃序列并不是真正的单位阶跃序列,而是一个长度为N单位门(Gate)序列,也就是un-un-N。但是在一个有限的图形窗口中,我们看到的还是一个单位阶跃序列。3、信号的基本加法和乘法运算信号f1与f2之和(瞬时和)是指同一瞬时两个信号之值对应相加所构成的“和信号”即f3=f1+f2;信号f1与f2之积是指同一瞬时两信号之值对应相乘所构成的“积信号”即f3= f1*f

5、2;离散序列相加(或相乘)可采用对应样点的值分别相加(或相乘)的方法来计算。用MATLAB程序仿真下面运算:f1=sin(t),f2=sin(t),f3=f1+f2,f4=f1*f2;x=0 1 1 1 1 1,h=2 1 3 4 1 1,y=x+h,g=x.*h;连续信号加法乘法实现程序 % Programt=0:0.01:4*pi;f1=sin(t);f2= sin(t);f3=f1+f2;f4=f1.*f2;subplot(221);plot(t,f1);title(f1 signal);subplot(222);plot(t,f2);title(f2 signal);subplot(2

6、23);plot(t,f3);title(f1+f2 signal);subplot(224);plot(t,f4);title(f1*f2 signal);运行后的结果:图1-1 程序运行结果图离散序列加法乘法实现程序x=0 1 1 1 1 1;h=2 1 3 4 1 1;y=x+h,g=x.*h;subplot(221);stem(x);title(x signal);subplot(222);stem(h);title(h signal);subplot(223);stem(y);title(x+h signal);subplot(224);stem(g);title(x.*h sign

7、al);运行后的结果:图1-2 程序运行结果图4、信号的时移信号的时移可用下面的数学表达式来描述:设一个连续时间信号为x(t),它的时移y(t) 表示为: y(t) = x(t - t0) 1.3其中,t0为位移量。若t0为正数,则y(t)等于将x(t)右移t0秒之后的结果。反之,若t0为负数,则y(t)等于将x(t)左移t0秒之后的结果。在MATLAB中,时移运算与数学上习惯表达方法完全相同。对给定一个连续时间信号x(t) = e-0.5tu(t),对它分别左移2秒钟和右移2秒钟得到信号x1(t) = e-0.5(t+2)u(t+2)和x2(t) = e-0.5(t-2)u(t-2)。 实现

8、程序:% Programclear,close all,t = -5:0.01:5;x = exp(-0.5*t).*u(t); % 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,ti

9、tle ( x = exp(-0.5*t).*u(t)subplot (312)plot (t,x1) % Plot x1(t)grid on,title ( x1 = exp(-0.5*(t+2).*u(t+2) )subplot (313)plot (t,x2) % Plot x2(t)grid on,title ( x2 = exp(-0.5*(t-2).*u(t-2)xlabel (Time t (sec)程序运行结果:图1-3 程序运行结果图注意:在运行上面的程序时,一定在所在的路径下创建u(t)的子函数:function y = u(t)y = (t=0); % y = 1 for

10、 t 0, else y = 0保存名为u.m5、信号的时域反褶对一个信号xn的反褶运算在数学上表示为 yn = x-n 1.4这种反褶运算,用MATLAB实现起来也是非常简单的。有多种方法可以实现信号的反褶运算。方法一,修改绘图函数plot(t,x)和stem(n,x)中的时间变量t和n,即用-t和-n替代原来的t和n,这样绘制出来的图形,看起来就是原信号经时域反褶后的版本。方法二,直接利用原信号与其反褶信号的数学关系式来实现。这种方法最符合信号反褶运算的实际意义。方法三,使用MATLAB内部函数fliplr()来实现信号的反褶运算。其用法如下:y = fliplr(x):其中x为原信号x(

11、t)或xn,而y则为x的时域反褶。需要说明的是,函数fliplr()对信号作时域反褶,仅仅将信号中各个元素的次序作了一个反转,这种反转处理是独立于时间变量t和n的。因此,如果信号与其时间变量能够用一个数学函数来表达的话,那么建议将时间变量t和n的范围指定在一个正负对称的时间区间即可。分别编写程序实现m=sin(t);n=sin(-t);xn=1 2 3 4;x-n,分析所画信号波形,程序如下:t=0:0.01:4*pi;n=0:1:3;m=sin(t);x=1 2 3 4;subplot(222);plot(t,m);title(sin(t) signal);subplot(221);plot

12、(-t,m);title(sin(-t) signal);subplot(224);stem(n,x);title(xn signal);subplot(223);stem(-n,x);title(x-n signal);程序运行结果:图1-4 程序运行结果图6、信号的时域尺度变换 信号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) =

13、 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 x = 1 2 3 4; h = 4 3 2 1; y=conv(x,h)在屏幕上得到显示结果:y = 4 11 20 30 20 11 4这表明,多项式p1和p2的乘积为: 正如前所述,用MATLAB处理连续时间信号时,独立时间变量t的变化步长应该是很小的,假定用符号dt表示时间变化步长,那么,用函数conv()作两个信

14、号的卷积积分时,应该在这个函数之前乘以时间步长方能得到正确的结果。也就是说,正确的语句形式应为:y = dt*conv(x,h)。对于定义在不同时间段的两个时限信号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) = u(t)-u(t-1),编写程序,完成这两个信号的卷

15、积运算,并绘制它们的波形图。范例程序如下:% Programt0 = -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(221)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,-

16、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 h(t), axis(2*t0,2*t1,-0.1,0.6), xlabel(Time t sec)程序运行结果图1-7 程序运行结果图在有些时候,做卷积和运算的两个序列中,可能有一个序列或者两个序列都非常长,甚至是无限长,MATLAB处理这样的序列时,总是把

17、它看作是一个有限长序列,具体长度由编程者确定。实际上,在信号与系统分析中所遇到的无限长序列,通常都是满足绝对可和或绝对可积条件的信号。因此,对信号采取这种截短处理尽管存在误差,但是通过选择合理的信号长度,这种误差是能够减小到可以接受的程度的。若这样的一个无限长序列可以用一个数学表达式表示的话,那么,它的长度可以由编程者通过指定时间变量n的范围来确定。例如,对于一个单边实指数序列xn = 0.5nun,通过指定n的范围为0 n 100,则对应的xn的长度为101点,虽然指定更宽的n的范围,xn将与实际情况更相符合,但是,注意到,当n大于某一数时,xn之值已经非常接近于0了。对于序列xn = 0.

18、5nun,当n = 7时,x7 = 0.0078,这已经是非常小了。所以,对于这个单边实指数序列,指定更长的n的范围是没有必要的。当然,不同的无限长序列具有不同的特殊性,在指定n的范围时,只要能够反映序列的主要特征就可以了。9、关于MATLAB工具在信号处理中应用的补充在绘制信号的波形图时,有时我们需要将若干个图形绘制在图一个图形窗口中,这就需要使用MATLAB的图形分割函数subplot(),其用法是在绘图函数stem或plot之前,使用图形分割函数subplot(n1,n2,n3),其中的参数n1,n2和n3的含义是,该函数将把一个图形窗口分割成n1xn2个子图,即将绘制的图形将绘制在第n

19、3个子图中。常用的图形控制函数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 closed form:)三、实验内容及步骤实验前,必须首先阅读本实验原理,读懂所给出

20、的全部范例程序。实验开始时,先在计算机上运行这些范例程序,观察所得到的信号的波形图。并结合范例程序应该完成的工作,进一步分析程序中各个语句的作用,从而真正理解这些程序。实验前,一定要针对下面的实验项目做好相应的实验准备工作,包括事先编写好相应的实验程序等事项。练习1:结合编写的阶跃函数编写一门函数(门宽为4幅度为1)写出程序并会出门函数信号的波形; 练习2:结合实验原理的信号的基本运算的程序,编写程序绘制m=sin(t);g=sin(2t-pi/2);xn=1 2 5 6 3 ;x(1/2)n-1;的四个信号的波形,并分析图形的变换过程。练习3:根据周期函数的定义以及实验原理中延拓的方法实现脉

21、冲函数(脉冲宽度1周期2幅度1)并绘制其图形;练习4:利用MATLAB内部所带的卷积工具对两个门函数进行卷积,分别绘制出两个门函数和卷积后的波形,并分析门函数卷积的规律,(一个门函数门宽为1幅度1另一个门函数门宽为2幅度为1,进行两者卷积)四、实验报告要求1、按要求完整书写你所编写的全部MATLAB程序2、详细记录实验过程中的有关信号波形图(存于自带的U盘中),图形要有明确的标题。全部的MATLAB图形应该用打印机打印,然后贴在本实验报告中的相应位置,禁止复印件。3、实事求是地回答相关问题,严禁抄袭。实验二 周期信号的傅里叶级数及Gibbs现象一、实验目的1、掌握连续时间周期信号的傅里叶级数的

22、物理意义和分析方法;2、观察截短傅里叶级数而产生的“Gibbs现象”,了解其特点以及产生的原因;3、掌握连续周期时间信号傅里叶变换的分析方法及其物理意义;二、实验原理及方法1、连续时间周期信号的傅里叶级数CTFS分析任何一个周期为T1的正弦周期信号,只要满足狄利克利条件,就可以展开成傅里叶级数。其中三角傅里叶级数为: 2.1或: 2.2其中,称为信号的基本频率(Fundamental frequency),分别是信号的直流分量、余弦分量幅度和正弦分量幅度,为合并同频率项之后各正弦谐波分量的幅度和初相位,它们都是频率的函数,绘制出它们与之间的图像,称为信号的频谱图(简称“频谱”),图像为幅度谱,

23、图像为相位谱。三角形式傅里叶级数表明,如果一个周期信号x(t),满足狄里克利条件,那么,它就可以被看作是由很多不同频率的互为谐波关系(harmonically related)的正弦信号所组成,其中每一个不同频率的正弦信号称为正弦谐波分量 (Sinusoid component),其幅度(amplitude)为。也可以反过来理解三角傅里叶级数:用无限多个正弦谐波分量可以合成一个任意的非正弦周期信号。指数形式的傅里叶级数为: 2.3其中,为指数形式的傅里叶级数的系数,按如下公式计算: 2.4指数形式的傅里叶级数告诉我们,如果一个周期信号x(t),满足狄里克利条件,那么,它就可以被看作是由很多不同

24、频率的互为谐波关系(harmonically related)的周期复指数信号所组成,其中每一个不同频率的周期复指数信号称为基本频率分量,其复幅度(complex amplitude)为。这里“复幅度(complex amplitude)”指的是通常是复数。上面的傅里叶级数的合成式说明,我们可以用无穷多个不同频率的周期复指数信号来合成任意一个周期信号。然而,用计算机(或任何其它设备)合成一个周期信号,显然不可能做到用无限多个谐波来合成,只能取这些有限个谐波分量来近似合成。假设谐波项数为N,则上面的和成式为: 2.5显然,N越大,所选项数越多,有限项级数合成的结果越逼近原信号x(t)。本实验可以

25、比较直观地了解傅里叶级数的物理意义,并观察到级数中各频率分量对波形的影响包括“Gibbs”现象:即信号在不连续点附近存在一个幅度大约为9%的过冲,且所选谐波次数越多,过冲点越向不连续点靠近。这一现象在观察周期矩形波信号和周期锯齿波信号时可以看得很清楚。例题1、给定一个周期为T1 = 2s的连续时间周期方波信号,如图所示,其一个周期内的数学表达式为:112-1-2x(t)t0图2.1 周期方波信号 解:首先,我们根据前面所给出的公式,计算该信号的傅里叶级数的系数。 因为:w0 = 2/T1 = ,代入上式得到:在MATLAB命令窗口,依次键入: k = -10:10; ak = (-j).k).

26、* (sin(k+eps)*pi/2)./(k+eps)*pi) % The expression of akak = Columns 1 through 4 -0.0000 0 + 0.0354i -0.0000 0 + 0.0455i Columns 5 through 8 -0.0000 0 + 0.0637i -0.0000 0 + 0.1061i Columns 9 through 12 -0.0000 0 + 0.3183i 0.5000 0 - 0.3183i Columns 13 through 16 -0.0000 0 - 0.1061i -0.0000 0 - 0.0637

27、i Columns 17 through 20 -0.0000 0 - 0.0455i -0.0000 0 - 0.0354i Column 21 -0.0000 从MATLAB命令窗口,我们得到了该周期信号从到共21个系数。紧接着再键入以下命令: subplot(221) stem(k,abs(ak),k.) title(The Fourier series coefficients) xlabel(Frequency index k)就得到一幅如右图所示的描述与k之间的关系的图形。以上是我们通过手工计算得到的这个周期信号的傅里叶级数表达式及其频谱图,下面给出完成傅里叶级数系数计算的相应MA

28、TLAB范例程序。% Program2_1% This program is used to evaluate the Fourier series coefficients ak of a periodic square waveclear, close allT = 2; dt = 0.00001; t = -2:dt:2;x1 = u(t) - u(t-1-dt); x = 0;for m = -1:1 % Periodically extend x1(t) to form a periodic signal x = x + u(t-m*T) - u(t-1-m*T-dt);endw0

29、= 2*pi/T;N = 10; % The number of the harmonic componentsL = 2*N+1;for k = -N: N; % Evaluate the Fourier series coefficients ak ak(N+1+k) = (1/T)*x1*exp(-j*k*w0*t)*dt;endphi = angle(ak); % Evaluate the phase of ak执行程序Program2_1后,就完成了信号的傅里叶级数的系数的计算,在命令窗口键入 ak命令窗口就可以显示傅里叶级数的21个系数:ak = Columns 1 through

30、 4 0.0000 + 0.0000i 0.0000 + 0.0354i 0.0000 - 0.0000i 0.0000 + 0.0455i Columns 5 through 8 0.0000 - 0.0000i 0.0000 + 0.0637i 0.0000 - 0.0000i 0.0000 + 0.1061i Columns 9 through 12 0.0000 - 0.0000i 0.0000 + 0.3183i 0.5000 0.0000 - 0.3183i Columns 13 through 16 0.0000 + 0.0000i 0.0000 - 0.1061i 0.0000

31、 + 0.0000i 0.0000 - 0.0637i Columns 17 through 20 0.0000 + 0.0000i 0.0000 - 0.0455i 0.0000 + 0.0000i 0.0000 - 0.0354i Column 21 0.0000 - 0.0000i将这里的ak之值同前面手工计算得到的ak比较,可见两者是完全相同的。再次特别提示:程序中,时间变量的变化步长dt的大小对傅里叶级数系数的计算精度的影响非常大,dt越小,精度越高,本程序中的dt之所以选择0.00001就是为了提高计算精度。但是,计算机所花的计算时间越长。在程序Program2_1中添加相应的计算

32、| ak |和绘图语句,就可以绘制出信号的幅度谱和相位谱的谱线图。2、周期信号的合成以及Gibbs现象从傅里叶级数的合成式(Synthesis equation)可以看出,用无穷多个不同频率和不同振幅的周期复指数信号可以合成一个周期信号。然而,我们无法用计算机实现对无穷多个周期复指数信号的合成。但是,用有限项来合成却是可行的,在实际应用中,多半也就是这么做的。然而,这样做的一个必然结果,就是引入了误差。如果一个周期信号在一个周期有内断点存在,那么,引入的误差将除了产生纹波之外,还将在断点处产生幅度大约为9%的过冲(Overshot),这种现象被称为吉伯斯现象(Gibbs phenomenon)

33、。为了能够观察到合成信号与原信号的不同以及Gibbs现象,我们可以利用前面已经计算出的傅里叶级数的系数,计算出截短的傅里叶级数:这个计算可用L = 2N+1次循环来完成:其中r作为循环次数,x2在循环之前应先清零。完成这一计算的MATLAB程序为:x2 = 0; L = 2*N+1;for r = 1:L; x2 = x2+ak(r)*exp(j*(r-1-N)*w0*t);end;完成了所有的计算之后,就可以用绘图函数:plot()和stem()将计算结果包括x1, x2, abs(ak)和angle(ak)以图形的形式给出,便于我们观察。观察吉伯斯现象的最好的周期信号就是图2-1所示的周期

34、方波信号,这种信号在一个周期内有两个断点,用有限项级数合成这个信号时,吉伯斯现象的特征非常明显,便于观察。例题2:修改程序Program2_1,使之能够用有限项级数合成例题2-1所给的周期方波信号,并绘制出原始周期信号、合成的周期信号、信号的幅度谱和相位谱。为此,只要将前述的for循环程序段和绘图程序段添加到程序Program2_1中即可,范例程序如下:% Program2_2% This program is used to compute the Fourier series coefficients ak of a periodic square waveclear,close allT

35、 = 2; dt = 0.00001; t = -2:dt:2;x1 = u(t)-u(t-1-dt); x = 0;for m = -1:1 x = x + u(t-m*T) - u(t-1-m*T-dt); % Periodically extend x1(t) to form a periodic signalendw0 = 2*pi/T;N = input(Type in the number of the harmonic components N = :);L = 2*N+1;for k = -N:1:N; ak(N+1+k) = (1/T)*x1*exp(-j*k*w0*t)*d

36、t;endphi = angle(ak);y=0;for q = 1:L; % Synthesiz the periodic signal y(t) from the finite Fourier series y = y+ak(q)*exp(j*(-(L-1)/2+q-1)*2*pi*t/T);end;subplot(221),plot(t,x), title(The original signal x(t), axis(-2,2,-0.2,1.2),subplot(223), plot(t,y), title(The synthesis signal y(t), axis(-2,2,-0.2,1.2), xlabel(Time t),subplot(222)k=-N:N; stem(k,abs(ak),k.), title(The amplitude |ak| of x(t), axis(-N,N,-

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号