北京理工大学信号与系统实验报告.docx

上传人:b****3 文档编号:4261062 上传时间:2023-05-06 格式:DOCX 页数:95 大小:819.13KB
下载 相关 举报
北京理工大学信号与系统实验报告.docx_第1页
第1页 / 共95页
北京理工大学信号与系统实验报告.docx_第2页
第2页 / 共95页
北京理工大学信号与系统实验报告.docx_第3页
第3页 / 共95页
北京理工大学信号与系统实验报告.docx_第4页
第4页 / 共95页
北京理工大学信号与系统实验报告.docx_第5页
第5页 / 共95页
北京理工大学信号与系统实验报告.docx_第6页
第6页 / 共95页
北京理工大学信号与系统实验报告.docx_第7页
第7页 / 共95页
北京理工大学信号与系统实验报告.docx_第8页
第8页 / 共95页
北京理工大学信号与系统实验报告.docx_第9页
第9页 / 共95页
北京理工大学信号与系统实验报告.docx_第10页
第10页 / 共95页
北京理工大学信号与系统实验报告.docx_第11页
第11页 / 共95页
北京理工大学信号与系统实验报告.docx_第12页
第12页 / 共95页
北京理工大学信号与系统实验报告.docx_第13页
第13页 / 共95页
北京理工大学信号与系统实验报告.docx_第14页
第14页 / 共95页
北京理工大学信号与系统实验报告.docx_第15页
第15页 / 共95页
北京理工大学信号与系统实验报告.docx_第16页
第16页 / 共95页
北京理工大学信号与系统实验报告.docx_第17页
第17页 / 共95页
北京理工大学信号与系统实验报告.docx_第18页
第18页 / 共95页
北京理工大学信号与系统实验报告.docx_第19页
第19页 / 共95页
北京理工大学信号与系统实验报告.docx_第20页
第20页 / 共95页
亲,该文档总共95页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

北京理工大学信号与系统实验报告.docx

《北京理工大学信号与系统实验报告.docx》由会员分享,可在线阅读,更多相关《北京理工大学信号与系统实验报告.docx(95页珍藏版)》请在冰点文库上搜索。

北京理工大学信号与系统实验报告.docx

北京理工大学信号与系统实验报告

实验1信号的时域描述与运算

一、实验目的

1、掌握信号的MATLAB表示及其可视化方法。

2、掌握信号基本时域运算的MATLAB实现方法。

3、利用MATLAB分析常用信号,加深对信号时域的理解。

二、实验原理

1、连续时间的MATLAB表示

连续时间信号指的是在连续时间范围内有定义的信号,即除若干个不连续点外,在任何信号都有意义。

在MATLAB中,连续时间信号可以用两种方法来表示,即向量表示法和符号对象表示法。

向量表示法:

严格意义上来说,MATLAB并不能处理连续时间信号,都必须是用信号等时间间隔采样后的采样值来近似表示的,采样时间间隔足够小的时候,这些采样值就可以近似地表示出连续时间信号。

例如:

>>t=0:

0.01:

10;

>>x=sin(t);

此时利用plot(t,x)命令即可绘制上述信号的时域波形。

符号对象表示法:

连续时间信号先用表达式表示出来,然后采用符号表达式来表示信号。

例如:

>>symt;

>>x=xin(t);

此时利用ezplot(x)命令即可绘制上述信号的时域波形。

常用的信号产生函数:

函数名

功能

heaviside

单位阶跃响应

sin

正弦函数

cos

余弦函数

sinc

sinc函数

exp

指数函数

函数名

功能

Rectpuls

门函数

Tripuls

三角脉冲函数

Square

周期方波

Sawtooth

周期锯齿波或三角函数

2、连续时间信号的时域运算

对连续时间信号的运算包括量信号想家、相乘、微分、积分以及位移反转、尺度变换(尺度伸缩)等

1)相加和相乘

信号的相加和相乘指两个信号对应时刻的值相加和相乘,对于两个采用向量表示的可以直接使用算术运算的运算符“+”和“•”来计算,此时要求表示两信号的向量时间范围和采样间隔相同,采用符号对象表示的两个信号,可以直接根据符号对象的运算规则运算。

2)微分和积分

对于向量表示发表示的连续时间信号,可以用过数值计算的方法计算信号的微分和积分。

这里由时间向量[t1,t2,…,tN]和采样值向量[x1,x2,…,xN]表示的连续信号的微分是利用差分来近似求取的。

MATLAB里用diff来计算差分x(k+1)-x(k)。

连续信号的定积分可以由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)表示信号压缩(a>1)或拉伸(a<1)。

3、离散时间信号的MATLAB表示

离散时间信号仅在一些离散时刻有定义。

在MATLAB中离散时间信号需要使用两个向量来表示,其中一个向量用于表示离散的时间点,另一个向量用来表示这些时间点上的值。

stem函数用于沪指离散时间信号波形,为了与我们表示离散时间信号的习惯相同,在绘图时一般需要添加“filled”选项,以绘制实心的杆状图形。

4、离散时间信号的时域运算

离散时间信号的相加相乘是将两个信号对应的时间上的值相加或相乘,可以直接使用算术运算的运算符“+”或“•”来计算。

离散时间信号的位移,则可看作是将表示时间的向量平移,而表示对应时间点上的值的向量不变。

离散时间信号的反转,则可看作是将表示时间的向量和表示对应时间点桑的值的向量以零为基准点,一纵轴为对称轴反折,向量的反折可以利用MATLAB的fliplr函数实现。

三、实验内容、实验结果以及实验中遇到的一些问题与解决

(1)利用MATLAB绘制下列连续时间信号波形:

1

X(t)=(u(t)

X(t)=[u(t)-u(t-2)]

2

X(t)=[u(t+2)-u(t-2)]

3

X(t)=[u(t)-u(t-3)]

4

第一题的总代码如下:

symst

x1=(1-exp(-0.5*t))*heaviside(t);%函数

subplot(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)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)');

 

第一题程序运行结果如下:

 

(2)

X(t)=u(n-3)

利用MATLAB绘制下列连续时间信号波形:

1

X(t)=u(n)

2

X(t)=n[u(n)-u(n-5)]

3

4

X(t)=u(n)

第二题的总代码如下:

n=0:

10;

x1=heaviside(n-3);

subplot(221);stem(n,x1,'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)');

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文件找到它的定义:

functionY=heaviside(X)

%HEAVISIDEStepfunction.

%HEAVISIDE(X)is0forX<0,1forX>0,and.5forX==0.

%HEAVISIDE(X)isnotafunctioninthestrictsense.

%SeealsoDIRAC.

%Copyright1993-2012TheMathWorks,Inc.

Y=zeros(size(X),'like',X);

Y(X>0)=1;

Y(X==0)=.5;

Y(isnan(X))=NaN;

看到这个函数的定义后,老师建议如果要改进要么将这个定义函数修改,要么就自己新定义一个函数保存在源文件中。

经过思考,我决定暂时修改这个函数,借用与我这次实验。

于是我修改了上面这段代码的下划线处,结果如下:

Y=zeros(size(X),'like',X);

Y(X>0)=1;

Y(X==0)=1;

Y(isnan(X))=NaN;

于是,我得到的图就是上文已经给出的“第二题的图”。

这个小小的问题当然不妨碍实验,但是从中我得到了定义一个函数的方法,也是一个小小的收获。

 

(3)利用MATLAB生成并绘制连续周期矩形波信号,要求周期为2,峰值为3,显示3个周期的波形。

第三题代码如下:

t=linspace(0,2*pi);%取间隔

y=3*square(pi*t);%方波

plot(t,y);

axis([02*pi-3.53.5]);%设置坐标范围

gridon;%网络线

xlabel('t');title('y');

第三题程序运行结果如下:

在课前编这道题时我是没有什么思路的,首先是周期方波怎么表示?

我细细再看了书上实验内容的参考后,明白了用square函数来表示,却不懂得周期方波的函数怎么使用。

此时我不得不上网去查周期方波函数square的使用方法,这才明白了函数括号里直接加上2*pi*t即是周期为1的方波。

网上有道例题,给出了linspace这个函数的定义,于是我就用这个函数取了间隔。

这样第一次画出的图形乍一看是几条竖线,我才回想起来绪论的时候老师曾经讲过用axis函数来调整坐标系。

当然在最后,为了使用新学的知识,我加上了个gridon来修饰整个图形。

 

(4)已知信号x1(t),以及信号x2(t)=sin(2πt),用MATLAB绘出下列信号的波形:

1X3(t)=x1(t)+x2(t)

2X4(t)=x1(t)×x2(t)

3X5(t)=x1(t)+x1(t)

4X6(t)=x2(t)×x3(t-1)

第四题的总代码如下:

symst

x1=(4-t)*[heaviside(t)-heaviside(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)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的用法,结果粗略的查找之下并没有非常详细的解答,原因是这个函数好像是在前几个版本新加进去的函数,网上有的一般是以y轴为作为门函数的中心进行定义,并没有偏离y轴的线为中心作门函数的定义。

一方面是我比较懒惰,没能耐心接着寻找这个问题的答案,另一方面我就要试试我自己的想法是否能够编译出可能的图形。

因此我使用[heaviside(0)-heaviside(4)]、[heaviside(-4)-heaviside(0)]作门函数,结果发现编出的前三个图形经过验证是正确的。

最后一个图形需要使用到变量替换的一个函数subs,其实就在书上的例题中,其用法就是在subs后先将要变量替换的函数x写出,逗号后再加变量t,逗号后再加上替换后的变量。

在编译时我曾漏掉过这一语句,结果检查时确实是比较难发现。

变量替换前后的图如下:

变量替换前的图形变量替换后的图形

这说明对我来说要格外小心,因为我很容易范这样的毛病,因此对于这样一个细小的误差来说在写代码时就应该严格注意。

 

(5)已知离散时间信号x(n),用MATLAB绘出x(n)、x(-n)、x(n+2)和x(n-2)的波形。

第五题的总代码如下:

n=-3:

4;

x=[01233330];

subplot(221);stem(n,x,'filled');

xlabel('n');title('x(n)');

n1=-n;

subplot(222);stem(n1,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编程绘制下列信号的时域波形,观察信号是否为周期信号?

若是周期信号,周期是多少?

若不是周期信号,请说明原因。

1

X(t)=1+++cos(2πt)

X(t)=

2

X(t)=2+

3

4

X(t)=

第六题的总代码如下:

symst

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,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');

第六题程序运行结果如下:

图一为周期函数,周期为8;图二为非周期函数;图三为周期函数,周期为3;图四为周期函数,周期为12;

 

四、实验收获与总结

通过此次的实验,我学会了MATLAB的一些基本编译的方法,包括掌握信号的MATLAB表示及其可视化方法。

掌握信号基本时域运算离散函数、连续函数的MATLAB实现方法。

课前的编译使得我实验课上更加地轻松,能够提前发现问题、寻求同学的帮助或者是上网查找一些相关的问题,也能够把不会的问题在课堂上进行解决。

此次实验我遇到的问题主要集中在2、3、4题上,其余的题我都比较轻松的完成,对于实验中的困难与解决在上述“实验内容、实验结果以及实验遇到的困难与解决”中已经将这部分进行了详细描述。

总而言之,这样自主的实验课能够让我们更加自主、主动地学习,自己琢磨掌握一些核心的编译方法,实验课上完不成的内容可以课后再研究、讨论,这门实验课提升了我的学习兴趣,也激发了我学习的动力。

相信今后的实验我能够越做越好。

 

实验2LIT系统的时域分析

一、实验目的

1、掌握利用MATLAB对系统进行时域分析的方法

2、掌握连续时间系统零状态响应、冲激响应和阶跃响应的求解方法

3、掌握求解离散时间系统响应、单位抽样响应的方法

4、加深对卷积积分和卷积和的理解,掌握利用计算机进行卷积积分和卷积和计算的方法

二、实验原理

1、连续时间系统时域分析的MATLAB实现

1)连续时间系统的MATLAB表示

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)这种调用格式不会出波形,而是返回响应的数值向量。

3)连续时间系统的冲激响应与阶跃响应

MATLAB提供函数impulse来求指定时间范围内,由模型sys描述的连续时间系统的单位冲激响应。

impulse函数的基本调用格式如下:

impulse(sys)在默认时间范围内绘出系统冲激响应的时域波形。

impulse(sys,T)绘出系统在0-T范围内冲激响应的时域波形。

impulse(sys,ts:

tp:

te)绘出系统在ts-te范围内,以tp为时间间隔取样的冲激响应波形。

[y,t]=impulse(…)该调用格式不会出冲激响应波形,而是返回冲激响应的数值向量及其对应的时间向量。

函数step用于求解单位阶跃响应,函数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提供了求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,t]=impz(…)该调用格式不会出单位抽样响应波形,而是返回单位抽样响应的数值向量及其对应的时间向量。

3、卷积和与卷积积分

1)离散时间序列的卷积和

卷积和是离散系统时域分析的基本方法之一,离散时间序列x1(n)和x2(n)的卷积和x(n)定义如下:

对已离散LTI系统,设其输入信号为x(n),单位抽样响应为h(n),则其零状态响应y(n)为

y(n)=x(n)*h(n)

即离散LTI系统的零状态响应可以表示成输入信号x(n)和单位抽样响应h(n)的卷积,因此,离散时间序列的卷积和计算对我们近离散吸引时域分析具有重要的意义。

MATLAB的conv函数可以用来求两个离散序列的卷积和,调用格式为x=conv(x1,x2)。

例如:

>>x1=ones(1,3);

>>x2=[1,2,3,4];

>>x=conv(x1,x2);

x=

136974

然而,我们不难发现,此例中序列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的时域宽度为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(t)的值x(nΔ),则由上式可得

当Δ足够小,x(nΔ)就是x(t)的数值近似。

我们可以利用计算离散序列卷积和的conv函数来计算卷积积分,具体步骤如下:

1将连续时间信号x1(t)和x2(t)以时间间隔Δ进行取样,得到离散序列x1(nΔ)和x2(nΔ);

2构造离散序列x1(t)和x2(t)对应的时间向量t1和t2;

3调用函数conv计算卷积积分在t=nΔ时的近似采样值x(nΔ);

4构造离散序列x(nΔ)对应的时间向量n。

根据上述过程可以自定义一个用于计算卷积积分的通用函数sconv,函数源代码如下:

function[x,t]=sconv(x1,x2,t1,t2,dt)

%计算连续信号卷积积分x(t)=x1(t)*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绘出各系统的单位冲激响应和单位阶跃响应波形。

1

2

3

4

第一题总程序代码如下:

a=[1sqrt

(2)1];b=[1];sys=tf(b,a);

subplot(421);impulse(sys);

subplot(422);step(sys);

a=[2sqrt

(2)1];b=[100];sys=tf(b,a);

subplot(423);impulse(sys);

subplot(424);step(sys);

a=[111];b=[10];sys=tf(b,a);

subplot(4

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

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2