信号与系统实验1.docx

上传人:b****5 文档编号:11544510 上传时间:2023-03-19 格式:DOCX 页数:14 大小:120.22KB
下载 相关 举报
信号与系统实验1.docx_第1页
第1页 / 共14页
信号与系统实验1.docx_第2页
第2页 / 共14页
信号与系统实验1.docx_第3页
第3页 / 共14页
信号与系统实验1.docx_第4页
第4页 / 共14页
信号与系统实验1.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

信号与系统实验1.docx

《信号与系统实验1.docx》由会员分享,可在线阅读,更多相关《信号与系统实验1.docx(14页珍藏版)》请在冰豆网上搜索。

信号与系统实验1.docx

信号与系统实验1

实验一信号与系统的时域分析

一、实验目的

1、熟悉和掌握常用的用于信号与系统时域仿真分析的MATLAB函数;

2、掌握连续时间和离散时间信号的MATLAB产生,掌握用周期延拓的方法将一个非周期信号进行周期信号延拓形成一个周期信号的MATLAB编程;

3、牢固掌握系统的单位冲激响应的概念,掌握LTI系统的卷积表达式及其物理意义,掌握卷积的计算方法、卷积的基本性质;

4、掌握利用MATLAB计算卷积的编程方法,并利用所编写的MATLAB程序验证卷积的常用基本性质;

掌握MATLAB描述LTI系统的常用方法及有关函数,并学会利用MATLAB求解LTI系统响应,绘制相应曲线。

基本要求:

掌握用MATLAB描述连续时间信号和离散时间信号的方法,能够编写MATLAB程序,实现各种信号的时域变换和运算,并且以图形的方式再现各种信号的波形。

掌握线性时不变连续系统的时域数学模型用MATLAB描述的方法,掌握卷积运算、线性常系数微分方程的求解编程。

二、实验原理

信号(Signal)一般都是随某一个或某几个独立变量的变化而变化的,例如,温度、压力、声音,还有股票市场的日收盘指数等,这些信号都是随时间的变化而变化的,还有一些信号,例如在研究地球结构时,地下某处的密度就是随着海拔高度的变化而变化的。

一幅图片中的每一个象素点的位置取决于两个坐标轴,即横轴和纵轴,因此,图像信号具有两个或两个以上的独立变量。

在《信号与系统》课程中,我们只关注这种只有一个独立变量(Independentvariable)的信号,并且把这个独立变量统称为时间变量(Timevariable),不管这个独立变量是否是时间变量。

在自然界中,大多数信号的时间变量都是连续变化的,因此这种信号被称为连续时间信号(Continuous-TimeSignals)或模拟信号(AnalogSignals),例如前面提到的温度、压力和声音信号就是连续时间信号的例子。

但是,还有一些信号的独立时间变量是离散变化的,这种信号称为离散时间信号。

前面提到的股票市场的日收盘指数,由于相邻两个交易日的日收盘指数相隔24小时,这意味着日收盘指数的时间变量是不连续的,因此日收盘指数是离散时间信号。

而系统则用于对信号进行运算或处理,或者从信号中提取有用的信息,或者滤出信号中某些无用的成分,如滤波,从而产生人们所希望的新的信号。

系统通常是由若干部件或单元组成的一个整体(Entity)。

系统可分为很多不同的类型,例如,根据系统所处理的信号的不同,系统可分为连续时间系统(Continuous-timesystem)和离散时间系统(Discrete-timesystem),根据系统所具有的不同性质,系统又可分为因果系统(Causalsystem)和非因果系统(Noncausalsystem)、稳定系统(Stablesystem)和不稳定系统(Unstablesystem)、线性系统(Linearsystem)和非线性系统(Nonlinearsystem)、时变系统(Time-variantsystem)和时不变系统(Time-invariantsystem)等等。

然而,在信号与系统和数字信号处理中,我们所分析的系统只是所谓的线性时不变系统,这种系统同时满足两个重要的基本性质,那就是线性性和时不变性,通常称为线性时不变(LTI)系统。

1.信号的时域表示方法

1.1将信号表示成独立时间变量的函数

例如x(t)=sin(ωt)和x[n]=n(0.5)nu[n]

分别表示一个连续时间信号和一个离散时间信号。

在MATLAB中有许多内部函数,可以直接完成信号的这种表达,例如:

sin():

正弦信号

cos():

余弦信号

exp():

指数信号

1.2用信号的波形图来描述信号

用函数曲线表示一个信号,图1.1就是一个连续时间信号和一个离散时间信号的波形图。

图1.1连续时间信号与离散时间信号的波形图

1.3将信号用一个数据序列来表示

对于离散时间信号,还可以表示成一个数的序列,例如:

x[n]={....,0.1,1.1,-1.2,0,1.3,….}

↑n=0

在《信号与系统》和《数字信号处理》课程中,上述三种信号的描述方法是经常要使用的。

2用MATLAB仿真连续时间信号和离散时间信号

在MATLAB中,无论是连续时间信号还是离散时间信号,MATLAB都是用一个数字序列来表示信号,这个数字序列在MATLAB中叫做向量(vector)。

通常的情况下,需要与时间变量相对应。

如前所述,MATLAB有很多内部数学函数可以用来产生这样的数字序列,例如sin()、cos()、exp()等函数可以直接产生一个按照正弦、余弦或指数规律变化的数字序列。

2.1连续时间信号的仿真

程序Program1_1是用MATLAB对一个正弦信号进行仿真的程序,请仔细阅读该程序,并在计算机上运行,观察所得图形。

%Program1_1

%Thisprogramisusedtogenerateasinusoidalsignalanddrawitsplot

clear,%Clearallvariables

closeall,%Closeallfigurewindows

dt=0.01;%Specifythestepoftimevariable

t=-2:

dt:

0.2;%Specifytheintervaloftime

x=sin(2*pi*t);%Generatethesignal

plot(t,x)%Openafigurewindowanddrawtheplotofx(t)

title('Sinusoidalsignalx(t)')

xlabel('Timet(sec)')

常用的图形控制函数

axis([xmin,xmax,ymin,ymax]):

图型显示区域控制函数,其中xmin为横轴的显示起点,xmax为横轴的显示终点,ymin为纵轴的显示起点,ymax为纵轴的显示终点。

有时,为了使图形具有可读性,需要在所绘制的图形中,加上一些网格线来反映信号的幅度大小。

MATLAB中的gridon/gridoff可以实现在你的图形中加网格线。

gridon:

在图形中加网格线。

gridoff:

取消图形中的网格线。

x=input(‘Typeinsignalx(t)inclosedform:

’)

在《信号与系统》课程中,单位阶跃信号u(t)和单位冲激信号δ(t)是二个非常有用的信号。

它们的定义如下

1.1(a)

1.1(b)

这里分别给出相应的简单的产生单位冲激信号和单位阶跃信号的扩展函数。

产生单位冲激信号的扩展函数为:

functiony=delta(t)

dt=0.01;

y=(u(t)-u(t-dt))/dt;

产生单位阶跃信号的扩展函数为:

%Unitstepfunction

functiony=u(t)

y=(t>=0);%y=1fort>0,elsey=0

请将这二个MATLAB函数分别以delta和u为文件名保存在work文件夹中,以后,就可以像教材中的方法使用单位冲激信号δ(t)和单位阶跃信号u(t)。

2.2信号的时域变换

2.2.1信号的时移

信号的时移可用下面的数学表达式来描述:

设一个连续时间信号为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中,时移运算与数学上习惯表达方法完全相同。

程序Program1_5对给定一个连续时间信号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)。

%Program1_5

%Thisprogramisusedtoimplementthetime-shiftoperation

%onacontinuous-timesignalandtoobtainitstime-shiftedversions

%andtodrawtheirplots.

clear,closeall,

t=-5:

0.01:

5;

x=exp(-0.5*t).*u(t);%Generatetheoriginalsignalx(t)

x1=exp(-0.5*(t+2)).*u(t+2);%Shiftx(t)totheleftby2secondtogetx1(t)

x2=exp(-0.5*(t-2)).*u(t-2);%Shiftx(t)totherightby2secondtogetx2(t)

subplot(311)

plot(t,x)%Plotx(t)

gridon,

title('Originalsignalx(t)')

subplot(312)

plot(t,x1)%Plotx1(t)

gridon,

title('Leftshiftedversionofx(t)')

subplot(313)

plot(t,x2)%Plotx2(t)

gridon,

title('Rightshiftedversionofx(t)')

xlabel('Timet(sec)')

2.2.2信号的时域反褶

对一个信号x[n]的反褶运算在数学上表示为

y[n]=x[-n]1.4

这种反褶运算,用MATLAB实现起来也是非常简单的。

有多种方法可以实现信号的反褶运算。

方法一,修改绘图函数plot(t,x)和stem(n,x)中的时间变量t和n,即用-t和-n替代原来的t和n,这样绘制出来的图形,看起来就是原信号经时域反褶后的版本。

方法二,直接利用原信号与其反褶信号的数学关系式来实现。

这种方法最符合信号反褶运算的实际意义。

方法三,使用MATLAB内部函数fliplr()来实现信号的反褶运算。

其用法如下:

y=fliplr(x):

其中x为原信号x(t)或x[n],而y则为x的时域反褶。

需要说明的是,函数fliplr()对信号作时域反褶,仅仅将信号中各个元素的次序作了一个反转,这种反转处理是独立于时间变量t和n的。

因此,如果信号与其时间变量能够用一个数学函数来表达的话,那么建议将时间变量t和n的范围指定在一个正负对称的时间区间即可。

2.2.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

当-1

当a<-1时,y(t)=x(at),y(t)是将x(t)在时间轴上的压缩同时翻转而得到;

由此可见,信号的时域尺度变换,除了对信号进行时域压缩或扩展外,还可能包括对信号的时域反褶运算。

实际上,MATLAB完成式1.5的运算,并不需要特殊的处理,按照数学上的常规方法即能完成。

2.2.4周期信号

在《信号与系统》课程中,周期信号是一类非常重要的信号。

给定一个信号x(t)或x[n],如果满足

x(t)=x(t+kT)1.6

x[n]=x[n+kN]1.7

则该信号叫做周期信号。

其中,k为任意整数,T和N为常数,通常称为信号的基本周期或最小周期。

周期信号可以看作是一个时限的非周期信号经过周期延拓之后形成的。

在数字信号处理中,周期延拓这一信号处理方法非常重要。

下面的程序段,就是将一个非周期信号x1(t)=e-2t[u(t)-u(t-2)]经过周期延拓之后而得到一个周期信号:

clear,closeall;

t=-4:

0.001:

4;

T=2;x=0;

fork=-2:

2;

x=x+exp(-2*(t-k*T)).*(u(t-k*T)-u(t-(k+1)*T));

end

仔细阅读该程序,可以发现其算法就是:

1.8

由于k无法计算到无穷,而是以有限值加以替代,反映到有限宽度图形窗口中得到的效果完全符合要求。

3LTI系统的时域描述

3.1线性时不变系统

在分析LTI系统时,有关LTI系统的两个重要的性质是必须首先掌握和理解的。

这就是线性性(Linearity)和时不变性(Time-invariance)。

所谓线性性就是指系统同时满足齐次性和叠加性。

这可以用下面的方法来描述。

假设系统在输入信号x1(t)作用时的响应信号为y1(t),在输入信号x2(t)作用时的响应信号为y2(t),给定两个常数a和b,如果当输入信号为x(t)时系统的响应信号为y(t),且满足

x(t)=x1(t)+x2(t)1.9(a)

y(t)=y1(t)+y2(t)1.9(b)

则该系统具有叠加性(Additivity)。

如果满足

x(t)=ax1(t)1.10(a)

y(t)=ay1(t)1.10(b)

则该系统具有齐次性(Homogeneity)。

一个系统如果是线性系统的话,那么这个系统必须同时具有叠加性和齐次性。

又假设系统在输入信号x(t)作用时的响应信号为y(t),对一个给定时间常数t0,如果当输入信号为x(t-t0)时,系统的响应信号为y(t-t0)的话,则该系统具有时不变性。

同时具有线性性和时不变性的系统,叫做线性时不变系统,简称LTI系统。

LTI系统有连续时间LTI系统和离散时间LTI系统之分。

连续时间系统的输入和输出信号都必须是连续时间信号,而离散时间系统的输入和输出信号都必须是离散时间信号。

3.2LTI系统的单位冲激响应和卷积模型

给定一个连续时间LTI系统,在系统的初始条件为零时,用单位冲激信号δ(t)作用于系统,此时系统的响应信号称为系统的单位冲激响应(Unitimpulseresponse),一般用h(t)来表示。

需要强调的是,系统的单位冲激响应是在激励信号为δ(t)时的零状态响应(Zero-stateresponse)。

离散时间LTI系统的单位冲激响应的定义与连续时间LTI系统的单位冲激响应相同,只是离散时间单位冲激函数δ[n]的定义有所不同。

系统的单位冲激响应是一个非常重要的概念,对于一个系统,如果我们知道了该系统的单位冲激响应,那么,该系统对任意输入信号的响应信号都可以求得。

也就是说,系统的输入信号x(t)、x[n]和输出信号y(t)、y[n]之间的关系可以用一个数学表达式来描述,这个数学表达式为

1.11(a)

1.11(b)

这个表达式就是LTI系统的卷积模型,它是根据系统的线性性和时不变性以及信号可以分解成单位冲激函数经推理得到的。

这个表达式实际上告诉了我们一个重要的结论,那就是,任意LTI系统可以完全由它的单位冲激响应h(t)/h[n]来确定。

由于系统的单位冲激响应是零状态响应,故按照式1.11求得的系统响应也是零状态响应。

式1.11中的积分运算叫做卷积积分,求和运算叫做卷积和,是描述连续时间系统输入输出关系的一个重要表达式。

3.3卷积的计算

卷积的计算通常可按下面的五个步骤进行(以卷积积分为例):

1.该换两个信号波形图中的横坐标,由t改为τ,τ变成函数的自变量;

2.把其中一个信号反褶,如把h(τ)变成h(-τ);

3.把反褶后的信号做移位,移位量是t,这样t是一个参变量。

在τ坐标系中,t>0时图形右移,t<0时图形左移。

4.计算两个信号重叠部分的乘积x(τ)h(t-τ);

5.完成相乘后图形的积分。

对于两个时限信号(Time-limitedsignal),按照上述的五个步骤,作卷积积分运算时,关键是正确确定不同情况下的积分限。

只要正确地确定了积分限都能得到正确定积分结果。

尽管如此,在时域中计算卷积积分,总体上来说是一项比较困难的工作。

程序convlution_demo用来演示上述作卷积积分运算的五个步骤。

本程序较为复杂,不建议读者读懂该程序,只需执行这个程序,观看程序执行过程中有关卷积积分的运算过程,以便于理解这五个步骤。

借助MATLAB的内部函数conv()可以很容易地完成两个信号的卷积积分运算。

其语法为:

y=conv(x,h)。

其中x和h分别是两个作卷积运算的信号,y为卷积结果。

为了正确地运用这个函数计算卷积,这里有必要对conv(x,h)做一个详细说明。

conv(x,h)函数实际上是完成两个多项式的乘法运算。

例如,两个多项式p1和p2分别为:

这两个多项式在MATLAB中是用它们的系数构成一个行向量来表示的,如果用x来表示多项式p1,h表示多项式p2,则x和h分别为

x=[1234]

h=[4321]

在MATLAB命令窗口依次键入

>>x=[1234];

>>h=[4321];

>>y=conv(x,h)

在屏幕上得到显示结果:

y=411203020114

这表明,多项式p1和p2的乘积为:

正如前所述,用MATLAB处理连续时间信号时,独立时间变量t的变化步长应该是很小的,假定用符号dt表示时间变化步长,那么,用函数conv()作两个信号的卷积积分时,应该在这个函数之前乘以时间步长方能得到正确的结果。

也就是说,正确的语句形式应为:

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)=t[u(t)-u(t-1)]和h(t)=u(t)-u(t-1),编写程序,完成这两个信号的卷积运算,并绘制它们的波形图。

范例程序如下:

%Program1_6

%Thisprogramcomputestheconvolutionoftwocontinuou-timesignals

clear;closeall;

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);%Computetheconvolutionofx(t)andh(t)

subplot(221)

plot(t,x),gridon,title('Signalx(t)'),axis([t0,t1,-0.2,1.2])

subplot(222)

plot(t,h),gridon,title('Signalh(t)'),axis([t0,t1,-0.2,1.2])

subplot(212)

t=2*t0:

dt:

2*t1;%Againspecifythetimerangetobesuitabletothe

%convolutionofxandh.

plot(t,y),gridon,title('Theconvolutionofx(t)andh(t)'),axis([2*t0,2*t1,-0.1,0.6]),

xlabel('Timetsec')

在有些时候,做卷积和运算的两个序列中,可能有一个序列或者两个序列都非常长,甚至是无限长,MATLAB处理这样的序列时,总是把它看作是一个有限长序列,具体长度由编程者确定。

实际上,在信号与系统分析中所遇到的无限长序列,通常都是满足绝对可和或绝对可积条件的信号。

因此,对信号采取这种截短处理尽管存在误差,但是通过选择合理的信号长度,这种误差是能够减小到可以接受的程度的。

若这样的一个无限长序列可以用一个数学表达式表示的话,那么,它的长度可以由编程者通过指定时间变量n的范围来确定。

例如,对于一个单边实指数序列x[n]=0.5nu[n],通过指定n的范围为0≤n≤100,则对应的x[n]的长度为101点,虽然指定更宽的n的范围,x[n]将与实际情况更相符合,但是,注意到,当n大于某一数时,x[n]之值已经非常接近于0了。

对于序列x[n]=0.5nu[n],当n=7时,x[7]=0.0078,这已经是非常小了。

所以,对于这个单边实指数序列,指定更长的n的范围是没有必要的。

当然,不同的无限长序列具有不同的特殊性,在指定n的范围时,只要能够反映序列的主要特征就可以了。

3.4用线性常系数微分方程描述LTI系统

线性常系数微分方程或差分方程是描述LTI系统的另一个时域模型。

一个连续时间LTI系统,它的输入信号x(t)输出信号y(t)关系可以用下面的微分方程来表达

1.12

式1.12中,max(N,M)定义为系统的阶。

式1.12描述了LTI系统输入信号和输出信号的一种隐性关系(Implicitrelationship)。

为了求得系统响应信号的显式表达式(Explicitexpression),必须对微分方程和差分方程求解。

MATLAB的函数lsim()能对上述微分方程描述的LTI连续系统的响应进行仿真。

Lsim()函数能绘制连续系统指定的任意时间范围内系统的响应时域波形。

调用格式:

Lsim(b,a,x,t)

在该调用格式中,a和b是描述微分方程的系数决定的表示的两个行向量,x和t表示输入信号的行向量,t表示时间,x表示输入信号。

例如,系统微分方程为:

若要求当输入信号为:

时的系统的零状态响应,则可如下实现:

a=[1,3,2];

b=8;

t=0:

0.5:

5;

x=exp(-2*t);

lsim(b,a,x,t);

三、实验内容及步骤

实验前,必须首先阅读本实验原理,读懂所给出的全部范例程序。

实验开始时,先在计算机上运行这些范例程序,观察所得到的信号的波形图。

并结合范例程序应该完成的工作,进一步分析程序中各个语句的作用,从而真正理解这些程序。

实验前,一定要针对下面的实验项目做好相应的实验准备工作,包括事先编写好相应的实验程序等事项。

Q1-1:

修改程序Program1_1,将dt改为0.2,再执行该程序,保存图形,看看所得图形的效果如何?

dt=0.01时的信号波形dt=0.2

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1