北京理工大学信号与系统实验报告_第1页
北京理工大学信号与系统实验报告_第2页
北京理工大学信号与系统实验报告_第3页
北京理工大学信号与系统实验报告_第4页
北京理工大学信号与系统实验报告_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

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

文档简介

1、.实验1 信号的时域描述与运算一、 实验目的1、 掌握信号的MATLAB表示及其可视化方法。2、 掌握信号基本时域运算的MATLAB实现方法。3、 利用MATLAB分析常用信号,加深对信号时域的理解。二、 实验原理1、 连续时间的MATLAB表示连续时间信号指的是在连续时间范围内有定义的信号,即除若干个不连续点外,在任何信号都有意义。在MATLAB中,连续时间信号可以用两种方法来表示,即向量表示法和符号对象表示法。向量表示法:严格意义上来说,MATLAB并不能处理连续时间信号,都必须是用信号等时间间隔采样后的采样值来近似表示的,采样时间间隔足够小的时候,这些采样值就可以近似地表示出连续时间信号

2、。例如:>>t=0:0.01:10;>>x=sin(t);此时利用plot(t,x)命令即可绘制上述信号的时域波形。符号对象表示法:连续时间信号先用表达式表示出来,然后采用符号表达式来表示信号。例如:>>sym t;>>x=xin(t);此时利用ezplot(x)命令即可绘制上述信号的时域波形。常用的信号产生函数:函数名功能heaviside单位阶跃响应sin正弦函数cos余弦函数sincsinc函数exp指数函数函数名功能Rectpuls门函数Tripuls三角脉冲函数Square周期方波Sawtooth周期锯齿波或三角函数2、 连续时间信号的

3、时域运算对连续时间信号的运算包括量信号想家、相乘、微分、积分以及位移反转、尺度变换(尺度伸缩)等1) 相加和相乘信号的相加和相乘指两个信号对应时刻的值相加和相乘,对于两个采用向量表示的可以直接使用算术运算的运算符“+”和“”来计算,此时要求表示两信号的向量时间范围和采样间隔相同,采用符号对象表示的两个信号,可以直接根据符号对象的运算规则运算。2) 微分和积分对于向量表示发表示的连续时间信号,可以用过数值计算的方法计算信号的微分和积分。这里由时间向量t1,t2,tN和采样值向量x1,x2,xN表示的连续信号的微分是利用差分来近似求取的。MATLAB里用diff来计算差分x(k+1)-x(k)。连

4、续信号的定积分可以由MATLAB的quad函数实现,调用格式为 quad(functions_name,a,b)其中,functions_name为被积函数名,a、b为积分区间。对于符号对象表示的连续时间信号,MATLAB提供了diff函数和quad函数分别用于求微分和积分3) 位移、反转、尺度变换符号的位移:信号x(t)的自变量t更换为(t-t0),表示x(t)波形在t轴上整体移动,当t0>0整体右移,当t0<0整体左移。信号的反转:信号x(t)的自变量t更换为-t,x(t)的波形相当于以t=0为轴反转过来。信号的尺度变换:信号x(t)的自变量t更换为at,x(at)表示信号压缩

5、(a>1)或拉伸(a<1)。3、 离散时间信号的MATLAB表示离散时间信号仅在一些离散时刻有定义。在MATLAB中离散时间信号需要使用两个向量来表示,其中一个向量用于表示离散的时间点,另一个向量用来表示这些时间点上的值。stem函数用于沪指离散时间信号波形,为了与我们表示离散时间信号的习惯相同,在绘图时一般需要添加“filled”选项,以绘制实心的杆状图形。4、 离散时间信号的时域运算离散时间信号的相加相乘是将两个信号对应的时间上的值相加或相乘,可以直接使用算术运算的运算符“+”或“”来计算。离散时间信号的位移,则可看作是将表示时间的向量平移,而表示对应时间点上的值的向量不变。离

6、散时间信号的反转,则可看作是将表示时间的向量和表示对应时间点桑的值的向量以零为基准点,一纵轴为对称轴反折,向量的反折可以利用MATLAB的fliplr函数实现。三、 实验内容、实验结果以及实验中遇到的一些问题与解决(1) 利用MATLAB绘制下列连续时间信号波形:X(t)=(1-e-0.5t) u(t)X(t)=cost u(t)-u(t-2)X(t)=|t|2cost u(t+2)-u(t-2)X(t)=e-tsin2t u(t)-u(t-3)第一题的总代码如下:syms t x1=(1-exp(-0.5*t)*heaviside(t); %函数sub

7、plot(221);ezplot(x1); %分块画图xlabel('t');title('1(1) x(t)'); %标记x2=cos(pi*t)*heaviside(t)-heaviside(t-2);subplot(222);ezplot(x2);xlabel('t');title('1(2) x(t)');x3=abs(t)/2*cos(pi*t)*heaviside(t+2)-heaviside(t-2);subplot(223);ezplot(x3);xlabel('t');title('1(3

8、) x(t)');x4=exp(-t)*sin(2*pi*t)*heaviside(t)-heaviside(t-3);subplot(224);ezplot(x4);xlabel('t');title('1(4) x(t)');第一题程序运行结果如下:X(t)=u(n-3)(2) 利用MATLAB绘制下列连续时间信号波形:X(t)=(-12)nu(n) X(t)=nu(n)-u(n-5) X(t)=sin(n2 )u(n) 第二题的总代码如下:n=0:10;x1=heaviside(n-3);subplot(221);stem(n,x1,&#

9、39;filled');xlabel('n');title('2(1) x(n)');x2=(-1/2).(n).*heaviside(n);subplot(222);stem(n,x2,'filled');xlabel('n');title('2(2) x(n)');x3=n.*heaviside(n)-heaviside(n-5);subplot(223);stem(n,x3,'filled');xlabel('n');title('2(3) x(n)')

10、;x4=sin(n*pi/2).*heaviside(n);subplot(224);stem(n,x4,'filled');xlabel('n');title('2(4) x(n)');第二题程序运行结果如下:注:第一个图中我将单位阶跃函数的定义给改了。在课前我就着手这次的实验,我一直百思不得其解的是单位阶跃信号在这题中n=3时应该为1,而右图是我第一次做这道题的图,在n=3时却是0.5。于是在实验课上就这个问题我请教了老师,就是这个heaviside函数的定义可以通过在C盘搜索heaviside文件找到它的定义:function Y = he

11、aviside(X)%HEAVISIDE Step function.% HEAVISIDE(X) is 0 for X < 0, 1 for X > 0, and .5 for X = 0.% HEAVISIDE(X) is not a function in the strict sense.% See also DIRAC.% Copyright 1993-2012 The MathWorks, Inc.Y = zeros(size(X),'like',X);Y(X > 0) = 1;Y(X = 0) = .5;Y(isnan(X) = NaN;看到这个

12、函数的定义后,老师建议如果要改进要么将这个定义函数修改,要么就自己新定义一个函数保存在源文件中。经过思考,我决定暂时修改这个函数,借用与我这次实验。于是我修改了上面这段代码的下划线处,结果如下:Y = zeros(size(X),'like',X);Y(X > 0) = 1;Y(X = 0) = 1;Y(isnan(X) = NaN;于是,我得到的图就是上文已经给出的“第二题的图”。这个小小的问题当然不妨碍实验,但是从中我得到了定义一个函数的方法,也是一个小小的收获。(3) 利用MATLAB生成并绘制连续周期矩形波信号,要求周期为2,峰值为3,显示3个周期的波形。第三题代

13、码如下:t=linspace(0,2*pi); %取间隔y=3*square(pi*t); %方波plot(t,y);axis(0 2*pi -3.5 3.5); %设置坐标范围grid on; %网络线xlabel('t');title('y');第三题程序运行结果如下:在课前编这道题时我是没有什么思路的,首先是周期方波怎么表示?我细细再看了书上实验内容的参考后,明白了用square函数来表示,却不懂得周期方波的函数怎么使用。此时我不得不上网去查周期方波函数square的使用方法,这才明白了函数括号里直接加上2*pi*t即是周期为1的方波。网上有道例题,给出了

14、linspace这个函数的定义,于是我就用这个函数取了间隔。这样第一次画出的图形乍一看是几条竖线,我才回想起来绪论的时候老师曾经讲过用axis函数来调整坐标系。当然在最后,为了使用新学的知识,我加上了个grid on来修饰整个图形。(4) 已知信号x1(t),以及信号 x2(t)=sin(2t),用MATLAB绘出下列信号的波形: X3(t)= x1(t)+x2(t) X4(t)= x1(t)×x2(t) X5(t)= x1(t)+x1(t) X6(t)= x2(t)×x3(t-1)第四题的总代码如下:syms tx1=(4-t)*heaviside(t)-heavisid

15、e(t-4); %用阶跃信号当门函数x10=(t+4)*heaviside(t+4)-heaviside(t);x2=sin(2*pi*t);x3=x1+x2;subplot(221);ezplot(x3);xlabel('t');title('4(1) x(t)');x4=x1*x2;subplot(222);ezplot(x4);xlabel('t');title('4(2) x(t)');x5=x10+x1;subplot(223);ezplot(x5);xlabel('t');title('4(3)

16、 x(t)');x3=subs(x3,t,t-1); %变量替换x6=x2*x3;subplot(224);ezplot(x6);xlabel('t');title('4(4) x(t)');第四题程序运行结果如下:这题在完成的过程中,主要是门函数的使用问题。我刚开始的思路是使用两个单位阶跃信号相减,还有一种方法是同学说的直接使用门函数rectpuls。相比之下我认为同学的方法更加好,然而当我使用rectpuls(0,4)定义一个在0-4的门函数后,编译出来的图形都十分的奇怪。于是我上网查找了有关rectpuls的用法,结果粗略的查找之下并没有非常详细的

17、解答,原因是这个函数好像是在前几个版本新加进去的函数,网上有的一般是以y轴为作为门函数的中心进行定义,并没有偏离y轴的线为中心作门函数的定义。一方面是我比较懒惰,没能耐心接着寻找这个问题的答案,另一方面我就要试试我自己的想法是否能够编译出可能的图形。因此我使用heaviside(0)-heaviside(4)、heaviside(-4)-heaviside(0)作门函数,结果发现编出的前三个图形经过验证是正确的。最后一个图形需要使用到变量替换的一个函数subs,其实就在书上的例题中,其用法就是在subs后先将要变量替换的函数x写出,逗号后再加变量t,逗号后再加上替换后的变量。在编译时我曾漏掉过

18、这一语句,结果检查时确实是比较难发现。变量替换前后的图如下: 变量替换前的图形 变量替换后的图形这说明对我来说要格外小心,因为我很容易范这样的毛病,因此对于这样一个细小的误差来说在写代码时就应该严格注意。(5) 已知离散时间信号x(n),用MATLAB绘出x(n)、x(-n)、x(n+2)和x(n-2)的波形。第五题的总代码如下:n=-3:4;x=0 1 2 3 3 3 3 0;subplot(221);stem(n,x,'filled');xlabel('n');title('x(n)');n1=-n;subplot(222);stem(n1,

19、x,'filled');xlabel('n');title('x(n)');n2=n-2;subplot(223);stem(n2,x,'filled');xlabel('n');title('x(n)');n3=n+2;subplot(224);stem(n3,x,'filled');xlabel('n');title('x(n)');第五题程序运行结果如下:(6) 用MATLAB编程绘制下列信号的时域波形,观察信号是否为周期信号?若是周期信号,周期

20、是多少?若不是周期信号,请说明原因。X(t)=1+cost4-3+2cos(t2)+cos(2t)X(t)=sint+2sint X(t)=2+3sin2n3-8 X(t)=cosn6+sinn3+cosn2 第六题的总代码如下:syms t x1=1+cos(pi/4*t-pi/3)+2*cos(pi/2*t-pi/4)+cos(2*pi*t);subplot(221);ezplot(x1,-3*pi,3*pi);xlabel('t');title('x1');x2=sin(t)+2*sin(pi*t);subplot(222);ezplot(x2,-3*pi

21、,3*pi); %非周期xlabel('t');title('x2');n=-3*pi:3*pi;x3=2+3*sin(2*n*pi/3-pi/8);subplot(223);stem(x3,'filled');xlabel('n');title('x3');n=-4*pi:4*pi;x4=cos(n*pi/6)+sin(n*pi/6)+cos(n*pi/2);subplot(224);stem(x4,'filled');xlabel('t');title('x4')

22、;第六题程序运行结果如下:图一为周期函数,周期为8;图二为非周期函数;图三为周期函数,周期为3;图四为周期函数,周期为12;四、 实验收获与总结通过此次的实验,我学会了MATLAB的一些基本编译的方法,包括掌握信号的MATLAB表示及其可视化方法。掌握信号基本时域运算离散函数、连续函数的MATLAB实现方法。课前的编译使得我实验课上更加地轻松,能够提前发现问题、寻求同学的帮助或者是上网查找一些相关的问题,也能够把不会的问题在课堂上进行解决。此次实验我遇到的问题主要集中在2、3、4题上,其余的题我都比较轻松的完成,对于实验中的困难与解决在上述“实验内容、实验结果以及实验遇到的困难与解决”中已经将

23、这部分进行了详细描述。总而言之,这样自主的实验课能够让我们更加自主、主动地学习,自己琢磨掌握一些核心的编译方法,实验课上完不成的内容可以课后再研究、讨论,这门实验课提升了我的学习兴趣,也激发了我学习的动力。相信今后的实验我能够越做越好。实验2 LIT系统的时域分析一、 实验目的1、掌握利用MATLAB对系统进行时域分析的方法2、掌握连续时间系统零状态响应、冲激响应和阶跃响应的求解方法3、掌握求解离散时间系统响应、单位抽样响应的方法4、加深对卷积积分和卷积和的理解,掌握利用计算机进行卷积积分和卷积和计算的方法二、 实验原理1、 连续时间系统时域分析的MATLAB实现1) 连续时间系统的MATLA

24、B表示LIT连续时间系统通常可以由系统微分方程描述,设描述系统的微分方程为:则在MATLAB里可以建立系统模型如下:b=bM,b(M-1),b0;a=aN,a(N-1),a0;sys=tf(b,a);其中,tf是用于创建系统模型的函数,向量a与b的元素是以微分方程求导的降次幂次序来排序的,如果有缺项,应用0补齐。2) 连续时间系统的零状态响应零状态响应是指系统的初始状态为零,仅由输入信号所引起的响应。MATLAB提供了一个用于求解零状态响应的函数lism,其调用格式如下:lism(sys,x,t)绘出输入信号及响应的波形,x和t表示输入信号数值向量及其时间向量。 y= lism(sys,x,t

25、)这种调用格式不会出波形,而是返回响应的数值向量。3) 连续时间系统的冲激响应与阶跃响应MATLAB提供函数impulse来求指定时间范围内,由模型sys描述的连续时间系统的单位冲激响应。impulse函数的基本调用格式如下:impulse(sys)在默认时间范围内绘出系统冲激响应的时域波形。impulse(sys,T)绘出系统在0-T范围内冲激响应的时域波形。impulse(sys,ts:tp:te)绘出系统在ts-te范围内,以tp为时间间隔取样的冲激响应波形。y,t=impulse()该调用格式不会出冲激响应波形,而是返回冲激响应的数值向量及其对应的时间向量。函数step用于求解单位阶跃

26、响应,函数step同样也有如下几种调用格式:step(sys)step(sys,T)step(sys,ts:tp:te) y,t= step()各种调用格式参数所代表的意思可参考上述impulse函数。2、 离散时间系统时域分析的MATLAB实现1) 离散时间系统的MATLAB表示LTI离散系统通常可以由系统差分方程描述,设描述系统的差分方程为:a0y(n)+a1y(n-1)+aNy(n-M)=b0x(n)+b1x(n-1)+bNx(n-N)则在MATLAB里,我们可以用如下两个向量来表示这个系统:b=b0,b1,bN;a=a0,a1,aN;2) 离散时间系统对任意输入的响应MATLAB提供了

27、求LIT离散系统响应的专用函数filter,该函数用于求取由差分方程所描述的离散时间系统在指定时间范围内对输入序列所产生的响应,该函数基本调用格式为:y=filter(b,a,x)其中,x为输入序列,y为输出序列,输出系列y对应的时间区间相同。3) 离散时间系统的单位抽样响应MATLAB提供了函数impz来求指定时间范围内,由向量b和a描述的离散时间系统的单位抽样响应,具体调用格式如下:impz(b,a)在默认时间范围内绘出单位抽样响应的时域波形。impz(b,a,N)绘出系统在0-N范围系统单位抽样响应的时域波形。impz(b,a,ns:te)绘出系统在ns-te范围内的单位抽样响应波形。y

28、,t=impz()该调用格式不会出单位抽样响应波形,而是返回单位抽样响应的数值向量及其对应的时间向量。3、 卷积和与卷积积分1) 离散时间序列的卷积和卷积和是离散系统时域分析的基本方法之一,离散时间序列x1(n)和x2(n)的卷积和x(n)定义如下:xn=x1n*x2n=k=-+x1kx2(n-k)对已离散LTI系统,设其输入信号为x(n),单位抽样响应为h(n),则其零状态响应y(n)为y(n)=x(n)*h(n)即离散LTI系统的零状态响应可以表示成输入信号x(n)和单位抽样响应h(n)的卷积,因此,离散时间序列的卷积和计算对我们近离散吸引时域分析具有重要的意义。MATLAB的conv函数

29、可以用来求两个离散序列的卷积和,调用格式为x=conv(x1,x2)。例如:>>x1=ones(1,3);>>x2=1,2,3,4;>>x=conv(x1,x2);x=1 3 6 9 7 4然而,我们不难发现,此例中序列x1、x2、x都没有时间信息,而实际上我们还需根据序列x1、x2对应时间序列确定卷积结果x对应的时间序列。设x1、x2为两个在有限时间区间内非零的离散时间序列,即序列x1在区间n1-n2内非零,序列x2在区间m1-m2内非零,则序列x1的时域宽度为L1=n2-n1+1,序列x2的时域宽度为L2=m2-m1+1。由卷积和的定义可知,卷积和序列x

30、的时域宽度为L=L1+L2-1,且只在区间(n1+m1)-(n1+m1)+(L1+L2-2)非零。2) 连续时间信号的卷积积分卷积积分是连续系统时域分析的有效方法和工具之一,连续时间信号x1(t)和x2(t)的卷积积分x(t)定义如下: 对已连续LTI系统,设其输入信号为x(t),单位冲激响应为h(t),其零状态响应为y(t),则有y(t)=x(t)*h(t)即连续LTI系统的零状态响应可以表示成输入信号和单位冲激响应的卷积。因此连续时间信号卷积积分对连续系统的时域分析具有非常重要的意义。利用MATLAB可以采用数值计算的方法近似计算卷积积分。卷积积分可用求和运算来实现现在考虑只求t=n时x(

31、t)的值x(n),则由上式可得当足够小,x(n)就是x(t)的数值近似。我们可以利用计算离散序列卷积和的conv函数来计算卷积积分,具体步骤如下: 将连续时间信号x1(t)和x2(t)以时间间隔进行取样,得到离散序列x1(n)和x2(n); 构造离散序列x1(t)和x2(t)对应的时间向量t1和t2 ; 调用函数conv计算卷积积分在t= n时的近似采样值x(n); 构造离散序列x(n)对应的时间向量n。根据上述过程可以自定义一个用于计算卷积积分的通用函数sconv,函数源代码如下:function x,t=sconv(x1,x2,t1,t2,dt)% 计算连续信号卷积积分x(t)=x1(t)

32、*x2(t)% 数值方法% x:卷积积分x(t)对应的非零值向量% t:f(t)的对应时间向量% x1:x1(t)的非零值向量% x2:x2(t)的非零值向量% t1:x1(t)的对应时间向量% t2:x2(t)的对应时间向量% dt:取样时间间隔function x,t=sconv(x1,x2,t1,t2,dt)x = conv(x1,x2);x = x*dt;t0 = t1(1)+t2(1);l = length(x1)+length(x2) - 2;t = t0:dt:(t0+l*dt);三、 实验内容、实验结果以及实验中遇到的一些问题与解决(1) 采用MATLAB绘出各系统的单位冲激响

33、应和单位阶跃响应波形。第一题总程序代码如下:a=1 sqrt(2) 1;b=1;sys=tf(b,a);subplot(421);impulse(sys);subplot(422);step(sys);a=2 sqrt(2) 1;b=1 0 0;sys=tf(b,a);subplot(423);impulse(sys);subplot(424);step(sys); a=1 1 1;b=1 0 ;sys=tf(b,a);subplot(425);impulse(sys);subplot(426);step(sys); a=1 1 1;b=1 0 1;sys=tf(b,a);subplot(42

34、7);impulse(sys);subplot(428);step(sys);第一题总运行结果:(2) 已知某系统可以由如下微分方程描述 利用MATLAB绘出该系统冲激响应和阶跃响应的时域波形。 根据冲激响应的时域波形分析系统的稳定性观察上面的波形,t趋于无穷时,y(t)均趋于0,所以该系统是稳定的。 如果系统的输入为,求系统的零状态响应。第二题总程序代码如下:b=0 0 1;a=1 1 6;sys=tf(b,a);subplot(311);impulse(sys);text(0.2,-0.3,'根据冲激相应时域波形可知,该系统稳定');subplot(312);step(sy

35、s);t=0:0.01:10;x=exp(-t);subplot(313);lsim(sys,x,t);第二总运行结果:(3) 已知描述离散系统的微分方程如下,用MATLAB绘出各系统的单位抽样响应,根据单位抽样响应的时域波形分析系统的稳定性。第三题总程序代码如下:b1=1 ;a1=1 3 2;subplot(211);impz(b1,a1,0:10);text(1,2000,'根据单位抽样响应时域波形可知,该系统不稳定');b2=1 -3 ;a2=1 -1/2 4/5;subplot(212);impz(b2,a2,0:40);text(10,2, '根据单位抽样响应

36、时域波形可知,该系统稳定');第三题总运行结果:(4) 已知系统可以由如下差分方程描述 第四题总程序代码如下:a=1 1 1/4;b=1;subplot(211);impz(b,a);subplot(212);t=0:1:20;x=heaviside(t);y=filter(b,a,x);stem(t,y,'filled');第四题总运行结果:(5) 用MATLAB计算如下两个序列的卷积,并绘出图形。第五题总程序代码如下:x1=1 2 1 1;n1=-1:2;x2=1 1 1 1 1;n2=-2:2;x3=conv(x1,x2);stem(x3,'filled&

37、#39;);xlabel('n');title('x1*x2');第五题总运行结果:(6) 已知某LTI离散系统,其单位抽样响应,系统的输入为,计算当n=0,1,2,40时系统的零状态响应y(n),绘出x(n),h(n)和y(n)时域波形。第六题总程序代码如下:n=0:40;x=sin(0.2.*n);subplot(311);stem(n,x,'filled');h=sin(0.5.*n);subplot(312);stem(n,h,'filled');y=conv(x,h);subplot(313);stem(y,'f

38、illed');第六题总运行结果:(7) 已知两个连续时间信号,求两个信号的卷积第六题总程序代码如下:dt = 0.01;t1 = -1:dt:1; x1 = 2*(heaviside(t1+1)-heaviside(t1-1);t2 = -2:dt:2;x2 = heaviside(t2+2)-heaviside(t2-2);x,t=sconv(x1,x2,t1,t2,dt);plot(t,x);axis(-3 3 0 4.5);第六题总运行结果:四、 实验收获与总结在此次实验中我掌握了连续时间系统零状态响应、冲激响应和阶跃响应的求解方法,加深了对卷积积分和卷积和的理解,掌握了利用计

39、算机进行卷积积分和卷积和计算的方法。不过对于程序的使用方面仍有欠缺,需要在下次实验中继续改进和掌握。在本次实验中也遇到了一些问题:本次试验中我遇到的问题就是在对离散序列做卷积时没有正确理解卷积后的时间序列的概念,在实验开始时,我并没有意识到需要由我们自己去确定卷积后的时间序列,还有就是原先我将sconv的原函数放在源文件夹里,发现无法调用,后来发现两个程序是要放在一个文件夹里才能成功调用,这个问题费了我不少时间。 经过这次实验后,对MATLAB有了初步的了解和应用,并且加深了对信号与系统这门课程的理解,感觉受益颇丰。实验3 信号的频域分析一、 实验目的1、 深入理解信号频谱的概念,掌握信号频谱

40、的概念,掌握信号的频域分析方法。2、 观察典型周期信和非周期信号的频谱,掌握其频谱特性二、 实验原理1、 连续周期信号的频谱分析如果周期信号满足狄里赫利条件,就可以展开为傅里叶级数的形式,即式中,T0表示基波周期,w0=2/T0为基波频率,T0()表示任一个基波周期内的积分。(1)式和(2)式定义为周期信号复制数形式的傅里叶级数,系数ck称为x(t)的傅里叶系数。周期信号的傅里叶级数还可以由三角函数的线性组合来表示,即式中同频率的正弦项和余弦项可以合并,从而得到三角函数形式的傅里叶级数,即可见,任何满足狄里赫利条件的周期信号都可以表示成一组谐波关系的复制数函数或三角函数的叠加。一般来说周期信号

41、表示为傅里叶级数时需要无限多项才能完全逼近原信号,但实际应用中经常采用有限项级数来代替,所选项越多就越逼近原信号。2、 连续非周期信号的频谱分析对于非周期连续时间信号,信号的傅里叶变换和傅里叶逆变换定义为(7)式和(8)式把信号的时域特性和频域特性联系起来,确立了非周期信号x(t)和频谱x(w)之间的关系。采用MATLAB可以方便地求取非周期连续信号的傅里叶变换,这里采用了常用的几种方法1) 符号法MATLAB的符号数学工具箱提供了直接求解傅里叶变换和反变换的函数,fourier和ifourier函数,基本调用格式为X=fourier(x)x=ifourier(X)默认的时域变量为t,频域变量

42、为w。例如求x(t)=e-2|t|的傅里叶变换,MATLAB代码和运行结果如下:>>syms t>>x=exp(-2*abs(t);>>X=fourier(x)X=4/(w2+4)Xw=44+w2因此,傅里叶变换的结果为也可以利用int函数直接根据求傅里叶变换。2) 数值积分法除了采用符号运算的方法外,我们还可以利用MATLAB的quad函数,采用数值积分的方法来进行连续信号的频谱分析,quad函数是一个用来计算数值积分的函数。利用quad函数可以计算非周期连续时间信号的频谱。Quad函数的一般调用格式为:y=quad(fun,a,b)y=quad(fun,

43、a,b,TOL,TRACE,p1,p2,)其中fun指定被积函数,可以采用inline命令来创建,也可以通过传递函数句柄的形式来指定,a、b表示定积分的下限和上限,TOL表示允许的相对或绝对积分误差,TRACE表示以被积函数的点绘图形式来跟踪该函数的返回值,如果TOL和TRACE为空矩阵,则使用缺省值,“p1,p2,”表示被积函数出时间t之外所需的其他额外输入参数。3) 数值近似法我们还可以利用MATLAB的数值计算的方法近似计算连续时间傅里叶变换。傅里叶变换x(w)可以由式(9)近似计算当x(t)为时限信号,且足够小,式(9)可以演变为而式(10)中求和部分又可以表示成一个行向量和一个列向量

44、的乘积式(11)可以很方便地利用MATLAB实现。3、 离散周期时间信号的频谱分析基波周期为N的周期序列x(n)可以用N个成谐波关系的复指数序列的加权和表示,即这里k=<N>表示求和仅需包括一个周期内的N项,周期序列在一个周期内的求和与起点无关。将周期序列表示成式(12)的形式,成为离散傅里叶级数,而系数ck则称为离散傅里叶系数。离散傅里叶系数ck可以由式(13)确定。傅里叶系数ck也称为x(n)的频谱系数,而且可以证明ck是以N为周期的离散频率序列。这说明了周期的离散时间函数对应于频域为周期的离散频率。这里,我们用周期N与傅里叶系数ck的乘积来表示周期离散时间信号的频谱,即x(k

45、)可以利用MATLAB提供的函数fft用来计算,调用格式为该函数返回x(k)一个周期内的值,其中x表示x(n)一个周期内的样本值。4、 离散非周期时间信号的频率分析非周期序列x(n)可以表示成一组复指数序列的连续和其中式(16)称为x(n)的离散时间傅里叶变换,式(15)和式(16)确立了非周期离散时间信号x(n)及其离散时间傅里叶变换 之间的关系。是连续频率的函数,称为频谱函数,且是周期的连续频率函数,其周期为2。可见,非周期离散时间函数对应于频域中是一个连续的周期的频率函数。对于有限长的时间序列,式(16)可以表示为式(17)可以方便地利用MATLAB实现。三、 实验内容、实验结果以及实验

46、中遇到的一些问题与解决(1) 已知x(t)是如图所示的周期矩形脉冲信号。计算该信号的傅里叶级数;利用MATLAB会出由前N次谐波合成的信号波形,观察随着N的变化合成信号波形的变化规律;利用MATLAB绘出周期矩形脉冲信号的频谱,观察参数T和变化时对频谱波形的影响。 傅里叶级数计算为ft=ET1+2n=1+sinn2n2cosnt 程序:syms t;t=-2:0.01:2;T=input('T='); tt=input('tt=(tt<T)'); N=input('N='); A=input('A=');x=zeros(si

47、ze(t);for n=1:2:N,m=(n-1)/2 x=x+(-1)(m-1)*(2*A/(pi*n*tt/T)*cos(2*pi*n*t/T);endx=x+A*tt/Tsubplot(211);plot(t,x);xlabel('Time(sec)');title('N=' num2str(N);以下为T=1,tt=0.5,A=1,不同N下的运行结果: 程序:N = 10;T = input('T=');tt = input('tt=');A = 1;w = 2*pi/T;n1 = -N:-1;c1 = (2*A*l/T)

48、*sin(n1*w*l/2)/w/l./n1*2;c0 = E*l/T;n2 = 1:N;c2 = (2*A*l/T)*sin(n1*w*l/2)/w/l./n1*2;cn = c1 c0 c2;n = -N:N;subplot(211);stem(n,abs(cn),'filled');xlabel('omega/omega_0');title('Magnitude of ck');subplot(212);stem(n,angle(cn),'filled');xlabel('omega/omega_0');ti

49、tle('Phase of ck');N = 10,A = 1,T=1,不同tt下的运行结果:tt = 0.5tt = 0.3tt = 0.7思考题:Q1-1、什么是吉伯斯现象?产生吉伯斯现象的原因是什么?答:将具有不连续点的周期函数(如矩形脉冲)进行傅立叶级数展开后,选取有限项进行合成。当选取的项数越多,在所合成的波形中出现的峰起越靠近原信号的不连续点。当选取的项数很大时,该峰起值趋于一个常数,大约等于总跳变值的9%。这种现象称为吉伯斯现象。原因是在不连续点附近所有的正弦信号均具有相同的变化趋势,该趋势在有限项内无法被消除。Q1-2、以周期矩形脉冲信号为例,说明周期信号的频谱

50、有什么特点。答:周期信号的频谱是具有周期性的一系列的脉冲信号。Q1-3、周期矩形脉冲信号的有效频带宽度与信号的时域宽度之间有什么关系?答:时域宽度越大,有效频带宽度越小。Q1-4、随着矩形脉冲信号参数的变化,其频谱结构如何变化?答:频谱包络形状不变,过零点不变,普贤间隔随着T变大而缩小。(2) 已知x(t)是如图所示的矩形脉冲信号。求该信号的傅里叶变换;利用MATLAB绘出矩形脉冲信号的频谱,观察矩形脉冲信号宽度变化时对频谱波形的影响;让矩形脉冲信号的面积始终等于1,改变矩形脉冲宽度,观察矩形脉冲信号时域波形和频谱随矩形脉冲宽度的变化趋势。 X(w)= 程序:syms t A tt;tt=in

51、put('tt=');A=input('A=');x=A*( heaviside(t+ (tt/2) )-heaviside(t- (tt/2) );X=fourier(x)ezplot(abs(X),-20,20);A=1,tt=1的运行结果:A=1,tt=2的运行结果:A=1,tt=5的运行结果: 程序:syms t A tt;tt=input('tt=');A=1/tt;x=A*( heaviside(t+ (tt/2) )-heaviside(t- (tt/2) );X=fourier(x)ezplot(abs(X),-20,20);tt

52、=1的运行结果:tt=2的运行结果:tt=5的运行结果:思考题:Q2-1、比较矩形脉冲信号和周期矩形脉冲信号的频谱,两者之间有何异同?答:矩形脉冲信号频谱为连续函数,周期矩形脉冲信号的频谱为一系列的脉冲。Q2-2、根据矩形脉冲宽度变化时频谱的变化规律,说明信号的有效频带宽度与其时域宽度之间有什么关系?答:信号有效频带宽度越大,时域宽度越小。(3) 已知xn是如图所示的周期方波序列。利用MATLAB绘制周期方波序列的频谱波形,改变参数N和N1的大小,观察频谱波形的变化趋势。第三题的总代码如下:double N;double N1;N=input('N=');N1=input(&#

53、39;N1=');n=-N+1:N-1;x(n>=-N1 & n<= N1)=1;x(n>N1 & n<(N-N1)=0;x(n>-N+N1 & n<-N1)=0;x(n>=N-N1 & n<=N+N1)=1;subplot(211);stem(n,x,'filled');xlabel('n');title('x(n)');subplot(212);X=fft(x);stem(n,X,'filled');xlabel('k');

54、title('X(k)');N1=5,N=20的运行结果N1=3,N=16的运行结果思考题:Q3-1、以周期方波序列为例,说明周期序列与连续周期信号的频谱有何异同。答:周期序列的频谱向外越来越大,连续周期信号频谱则是中间向两边越来越小。Q3-2、随着周期方波序列占空比的变化,其频谱如何随之变化?答:随着占空比越来越大,频谱密度也越来越大。(4) 已知一矩形脉冲序列。利用MATLAB绘制周期方波序列的频谱波形,改变矩形脉冲序列的宽度,观察频谱波形的变化趋势。第四题的总代码如下:double N1;%做完一次运算后记着clearN1=input('N1=');w=-

55、pi:0.01*pi:pi;n=-N1:N1;x(n>=(-N1) & n<=N1)=1;X=x*exp(-j*(n'*w) );subplot(211);stem(n,x,'filled');xlabel('n');title('x(n)');subplot(212);plot(w/pi,abs(X);N=10N=5思考题:Q4-1、随着矩形脉冲序列宽度的变化,其频谱如何随之变化?其宽度与频谱的有效宽度有何关系?答:宽度越大,频谱变化就越密集。矩形脉冲信号序列宽度越大,频谱有效宽度越大。四、 实验收获与总结此次实验难度与前两次相比较有明显的提升,花费的时间也明显增加。很多程序都是在与同学讨论之后才写出来的。本次实验中我遇到的问题就是容易误把频谱也做了累加,得到了错误的波形和结果,在经过和课本上的范例对比之后,我找出了错误,得到了正确的波形和结果。这次实验不仅是对知识掌握程度的考验,也是对个人耐心和学习态度的考验,我的收获收获就是从实验的角度了解了吉伯斯现象,

温馨提示

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

评论

0/150

提交评论