信号与系统matlab仿真实验指导 下载本文

信号与系统实验指导书

第二部分 上机实验

实验一 连续时间信号的时域分析

一、实验目的:

1、熟悉表示连续时间信号的MATLAB函数; 2、掌握用MATLAB描绘二维图像的方法。

3、掌握用MATLAB对连续信号进行基本的运算和时域变换的方法。 二、实验原理:

(一)连续时间信号的时域表示

信号是消息的载体,是消息的一种表现形式。信号可以是多种多样的,通常表现为随时间变化的某些物理量,一般用x(t)或x(n)来表示。信号按照自变量的取值是否连续可分为连续时间信号和离散时间信号。

连续时间信号是指自变量的取值范围是连续的,且对于一切自变量的取值,除了有若干不连续点以外,信号都有确定的值与之对应。严格来说,MATLAB并不能处理连续信号,而是用等时间间隔点的样值来近似地表示连续信号。当取样时间间隔足够小时,这些离散的样值就能较好地近似连续信号。在MATLAB中通常用向量来表示连续时间信号,向量需要与时间变量相对应。

对于连续时间信号x(t),可用x、t两个行向量来表示。其中向量t是形如t = t1:p:t2的MATLAB命令定义的时间范围向量,t1为信号起始时间,t2为终止时间,p为时间间隔。向量x为连续信号x(t)在向量t所定义的时间点上的样值。如产生连续信号

sin(t)x(t)?Sa(t)?可用如下命令实现:

tt =-10:1.5:10; x=sin(t)./ t;

在命令窗口(Command Window)中可得到程序执行的结果即x、t的具体值。注意:在MATLAB程序调试过程中,有时程序执行不出结果或虽然出结果但存在一些问题,MATLAB 都会在Command窗口中给出错误说明,掌握利用Command窗口中的说明检查程序的方法。

用上述向量对连续信号进行表示后,就可以用plot命令绘制信号的时域波形。命令如下:

plot(t,x) title(‘x(t)=Sa(t)’) xlabel(‘t’)

axis([-10,10,-0.2,1.2])

绘制的信号波形如图一所示,当把t改为:t =-10:0.5:10;则可得到图二。因为plot命令将点与点之间用直线连接,当点与点之间距离很小时,绘出的图形就成了光滑的曲线。但图二在t=0时,曲线是间断的。

第1页

信号与系统实验指导书

图一 图二

应用plot函数时应确保自变量t和函数值x的个数相等;函数axis([x1,x2,y1,y2])用来对横纵坐标进行限定,以完善图形,其中x1和x2分别为横坐标的起始和截止位置,y1和y2分别为纵坐标的起始和截止位置; xlabel(‘’)、ylabel(‘’)和title(‘’)用于为该图添加横、纵坐标说明和标题;有时在一个程序中需要将几个图形绘制在一个窗口,利用subplot(m,n,k)函数可以将当前窗口分成m行n列个子窗口,并在第k个子窗口绘图,窗口的排列顺序为从左至右,从上至下分别为1,2,?m*n。

以上为几个常用绘图函数的基本用法,有关各函数的其他参数可参考MATLAB的帮助文件。

在《信号与系统》课程中,单位冲激信号?(t) 和单位阶跃信号u(t)是两个最基本的信号。它们的定义如下:

?????(t)dt?1 1.1 1.2

?(t)?0,?1,u(t)???0,t?0t?0t?0下面给出产生单位冲激信号和单位阶跃信号的两个函数,供参考。 产生单位冲激信号的程序为:

function x=delta(t1,t2,t0)

dt=0.01; %信号的时间间隔 t=t1:dt:t2; %信号时间样本点向量 n=length(t); %时间样本点向量长度 x=zeros(1,n); %各样本点函数值赋值为零

x(1,(t0-t1)/dt+1)=1/dt; %在时间t=-t0处,样本点赋值为1/dt stairs(t,x);

产生单位阶跃信号的程序为:

function x=ut(t)

x=(t>0); %t>0时x为1,否则为0

在调用该函数表示信号时,需要先定义向量t,如t=-1:0.01:3。

对于其他常用信号,可以直接调用MATLAB中的内部函数进行定义,例如:正弦信号:sin( ),余弦信号:cos( ),指数信号:exp( ),符号函数:sign( );square( ),周期方波:

第2页

信号与系统实验指导书

周期锯齿波:sawtooth( )。复指数信号是时间t的复函数,需要用模和相角或实部和虚部来表示复指数信号随时间变化的规律,对应的函数分别为abs( ),angle( ),real( ),imag( )。

各函数的参数及定义方法可参考MATLAB的帮助文件。 (二)连续时间信号的基本运算和时域变换 1、加法:x1(t)+x2(t)

信号的加法运算为对应位置处量值的相加,在MATLAB中可用运算符“+”实现,但要求参与运算的两信号向量的长度必须相等。如果长度不等或者长度相等但采样位置不同,则不能直接应用该运算符,此时需要先给定参数使序列具有相同的位置向量和长度。下面给出sigadd函数实现任意两信号的加法运算。

function [y,t] = sigadd(x1,t1,x2,t2)

t = min(min(t1),min(t2)):max(max(t1),max(t2)); %结果的时间向量 y1 = zeros(1,length(t)); y2 = y1; %初始化

y1(find((t>=min(t1))&(t<=max(t1))==1))=x1; %在公共区间定义y1 y2(find((t>=min(t2))&(t<=max(t2))==1))=x2; %在公共区间定义y2 y = y1+y2;

其中x1和x2为参与加法运算的两信号,t1和t2分别为x1和x2的时间向量。 2、乘法:x1(t)·x2(t)

序列的乘法运算为对应位置处量值的相乘,在MATLAB中由数组运算符“.*”实现,也受到“+”运算符同样的限制。

3、时移:y(t) = x(t - t0)

其中,t0为位移量,当t0>0时,y(t)为x(t)右移t0时刻之后的结果,当t0<0时,y(t)为x(t)左移|t0|时刻之后的结果。

在MATLAB中,时移运算与数学上习惯表达方法完全相同。例:

clear; t = -5:0.01:5;

x = exp(-0.5*t).*ut(t); x1 = exp(-0.5*(t+2)).*ut(t+2); subplot(211)

plot(t,x) title ('原信号x(t)') subplot (212) plot (t,x1) title (' x(t)左移2') xlabel (' t (sec)')

若信号的自变量的范围和t的范围相同,则不能用上述方法,如将x = exp(-0.5*t)

第3页

信号与系统实验指导书

进行左移得到x1 = exp(-0.5*(t+2))后,还需要对x1的时间变量重新定义。由于函数的平移可看作是函数时间向量的平移,而对应的样值不变,当函数左移时,所有时间序号都减小|t0|个单位,反之,则增加t0个单位。因此可用如下方式实现:

t1=t+t0; x1=x;

plot(t1,x1)

注:函数左移时,t0<0,即t-|t0|;函数右移时,t0>0。

4、反折:y(t) = x(-t)

在MATLAB中有多种方法可以实现信号的反折运算。

(1)修改绘图函数plot(t,x)中的时间变量t,即用-t代替原来的t。

(2)直接利用原信号与其反折信号的数学关系式来实现。这种方法最符合信号反折运算的实际意义。

(3)使用MATLAB内部函数fliplr( )来实现信号的反褶运算。其用法为: y = fliplr(x),其中x为原信号,而y则为x的时域反折。需要说明的是,函数fliplr()对信号作时域反折,仅仅将信号中各个元素的次序作了一个反转,这种反转处理是独立于时间变量t的。因此,还需要对时间变量t进行反折,即t= -fliplr(x)。

5、尺度变换:y(t) = x(at)

其中a为任意常数。根据a的不同取值,尺度变换对信号x(t)具有不同的影响。当a > 1时,y(t) = x(at),y(t)是将x(t)在时间轴上压缩得到;当0 < a < 1时,y(t) = x(at),y(t)是将x(t)在时间轴上扩展得到。在MATLAB中,按照数学上的常规方法即能实现。

(三)周期信号

周期信号是一类非常重要的信号。给定一个信号x(t),如果满足x(t) = x(t+kT),则该信号叫做周期信号。其中,k为任意整数,T为常数,通常称为信号的基本周期或最小周期。周期信号可以看作是一个有限长非周期信号经过周期延拓之后形成的。

周期信号可用如下表达式定义:x(t)?三、实验内容:

1、参考示例程序,绘制信号e?2tcos3?t[u(t)?u(t?3)]的图形。

2、产生一个指数为[-0.1+(pi/4)*i]*t的复指数函数,0?t?3,时间间隔取为0.5,绘出函数的实部、虚部、幅度和相位的波形。

3、已知e?0.5t?u(t),求信号y(t)?x(1.5t?3),并绘制出x(t) 和y(t)的图形。 4、选做:

(1)周期信号的实现。根据式1.3产生一个周期信号。

(2) 根据符号函数和单位阶跃函数的关系,利用符号函数sign实现单位阶跃函数。要求图形窗口的横坐标范围为-5~5,纵坐标范围为-1.5~1.5。

k????x(t?kT) 1.3

1?第4页

信号与系统实验指导书

四、思考:

1、为什么图二中t=0处曲线是间断的,如何使其成为连续的曲线? 2、代数运算符号*和.*的区别是?

第5页

信号与系统实验指导书

实验二 连续时间信号的卷积

一、实验目的:

1、掌握两个连续时间信号卷积的计算方法和编程技术。 2、进一步熟悉用MATLAB描绘二维图像的方法。 二、实验原理:

卷积积分在信号与线性系统分析中具有非常重要的意义,是信号与系统分析的基本方法之一。

(一)卷积的定义

连续时间信号 f1(t)和 f2(t)的卷积积分(简称为卷积)f(t)定义为:

f(t)?f1(t)*f2(t)??f1(?)f2(t??)d?

???(二)线性时不变(LTI)系统的单位冲激响应

给定一个连续时间LTI系统,在系统的初始条件为零时,用单位冲激信号?(t)作用于系统,此时系统的响应信号称为系统的单位冲激响应(Unit impulse response),一般用h(t)来表示。需要强调的是,系统的单位冲激响应是在激励信号为? (t)时的零状态响应(Zero-state response)。

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

(三)卷积的意义

对于LTI系统,根据系统的线性和时不变性以及信号可以分解成单位冲激函数可得,任意LTI系统可以完全由它的单位冲激响应h(t)来确定,系统的输入信号x(t)和输出信号y(t)之间的关系可以用卷积运算来描述,即:

y(t)??x(?)h(t??)d?

???由于系统的单位冲激响应是零状态响应,故按照上式求得的系统响应也是零状态响应。它是描述连续时间系统输入输出关系的一个重要表达式。

(四)函数说明

利用MATLAB的内部函数conv( )可以很容易地完成两个信号的卷积积分运算。其语法为:y = conv(x,h)。其中x和h分别是两个参与卷积运算的信号,y为卷积结果。

为了正确地运用这个函数计算卷积,这里对conv(x,h)做一个详细说明。conv(x,h)函数实际上是完成两个多项式的乘法运算。例如,两个多项式p1和p2分别为:

p1?s3?2s2?3s?4 和 p2?4s3?3s2?2s?1

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

x = [1 2 3 4] h = [4 3 2 1] 在MATLAB命令窗口依次键入

第6页

信号与系统实验指导书

>> x = [1 2 3 4]; >> h = [4 3 2 1]; >> y=conv(x,h)

在屏幕上得到显示结果:

y = 4 11 20 30 20 11 4 这表明,多项式p1和p2的乘积为:

p3?4s6?11s5?20s4?30s3?20s2?11s?4

用MATLAB处理连续时间信号时,时间变量t的变化步长应该很小,假定用符号dt表示时间变化步长,那么,用函数conv( )作两个信号的卷积积分时,应该在这个函数之前乘以时间步长方能得到正确的结果。也就是说,正确的语句形式应为:y = dt*conv(x,h)。

对于定义在不同时间段的两个时限信号x(t),t1 ≤ t ≤ t2,和h(t),t3 ≤ t ≤ t4。 如果用y(t)来表示它们的卷积结果,则y(t)的持续时间范围应为t0+t2 ≤ t ≤ t1+t3,这个结论很重要。在处理卷积结果的时间范围时,要利用这个结论,将结果的函数值与时间轴的位置和长度关系保持一致。

另,用函数conv( )计算得到的卷积结果的长度为参与卷积的两函数长度之和减1。 可参考以下程序得到卷积结果的时间变量:

%计算卷积结果的非零样值的起点位置, %k1,k2分别为参与卷积的两函数的时间向量 k0=k1(1)+k2(1);

%计算卷积结果的非零样值的宽度 k3=length(f);

%确定卷积结果的非零样值的时间向量 k=k0:p:k0+(k3-1)*p;

有时候,参与卷积运算的两个函数,可能有一个或者两个都很长,甚至是无限长,MATLAB处理这样的函数时,总是把它看作是一个有限长序列,具体长度由编程者确定。实际上,在信号与系统分析中所遇到的无限函数,通常都是满足绝对可积条件的信号,因此,对信号采取这种截断处理尽管存在误差,但是通过选择合理的信号长度,能够将误差减小到可以接受的程度。 三、实验内容:

1、已知两连续时间信号如下图所示,绘制信号f1(t)、f2(t)及卷积结果f(t)的波形;设时间变化步长dt分别取为0.5、0.1、0.01,当dt取多少时,程序的计算结果就是连续时间卷积的较好近似?

第7页

信号与系统实验指导书

1 f1(t) f2(t) 1 -1 1 t 0 2 t

2、计算信号f1(t)?e?atu(t)和f2(t)?sintu(t)的卷积f(t), f1(t)、f2(t)的时间范围取为0~5,步长值取为0.1。绘制三个信号的波形。

第8页

信号与系统实验指导书

实验三 连续时间周期信号的傅里叶级数

一、实验目的:

1、掌握连续时间周期信号的傅里叶级数的物理意义和分析方法。

2、观察由矩形窗函数截断产生的Gibbs现象,了解其特点、产生的原因及消除的方法。 3、掌握周期函数的傅里叶级数计算方法和编程技术。 二、实验原理:

(一)傅里叶级数(FS)展开

周期为T1连续时间周期信号,若满足狄利克莱条件,就可以展开成FS。其中三角形式的傅里叶级数为:

a0?a0?2?2?x(t)???[akcosk?1t?bksink?1t] ???[akcoskt?bksinkt] (1)

2k?12k?1T1T12?,称为信号的基本频率(Fundamental frequency),a0,ak,和bk分别T1是信号x(t)的直流分量、余弦分量幅度和正弦分量幅度。其中:

2t0?T12t0?T1ak??x(t)cosk?1tdt bk??x(t)sink?1tdt (2)

ttT10T10连续时间周期信号x(t)的幅度频谱与相位频谱分别为

Ak?ak2?bk2 ?k?arctanbk (3)

其中?1?ak其中k与频率的关系为??k?1,因此上式给出了信号基波与各次谐波幅度随频率变化的规律。

三角形式的傅里叶级数表明,一个周期信号x(t) 如果满足狄里克莱条件,那么,它就可以被看作是由很多不同频率的正弦信号所组成,其中每一个不同频率的正弦信号称为正弦谐波分量,其幅度为Ak。反过来理解三角傅里叶级数:用无穷多个正弦谐波分量可以合成一个任意的非正弦周期信号。 (二)吉布斯(Gibbs)现象

当利用(1)式对一个周期函数作实际展开运算时,对k的求和过程不可能进行到无穷,只能到某一有限值K,即相当于在频域用一个矩形窗函数WK(k)与FS的求和式相乘,得到一个频域有限长序列X(k)?WK(k),因此实际FS展开式为

a0?x(t)???[akcosk?1t?bksink?1t]WK(k)

2k?1a0K ???[akcoks?1t?bksink?1t] (4)

2k?1K越大,所选项数越多,有限项级数合成的结果越逼近原信号x(t)。截断引起信号失真,这是由于高频部分信号的损失。这就导致在构成有跃变的连续时间周期函数时,在跃变点的附近存在一个幅度大约为9%的过冲,且所选谐波次数越多,过冲点越向不连续点靠近。这种现象称为Gibbs现象,或称为震铃(ringing)效应。

若在计算机上编程对周期函数x(t)进行FS展开,必须对函数x(t)作等间距抽样。

第9页

信号与系统实验指导书

若抽样周期为Ts,且令T1?NTs,则??k?1?k2?,(1)式离散化为

NTsx(nTs)?x(t)t?nTsa0?2?2????[akcosnk?bksinnk] (5) 2k?1NN时间抽样后,(4)式离散化为

a0K x(n)???[akcos2?nk?bksin2?nk] (6)

2k?1NN将上式与(4)式比较可见,实际的FS展开式x(n)与x(nTs)之间的误差为 ?2?2??(n,K)??[akcosnk?bksinnk] (7)

k?KNN上式表明,实际展开后的误差是时间n(t = nTs)和截断频率K(?c?K?1)的函数。

图3-1给出了一个方波信号展开成有限长FS后,在跃变点的附近产生的Gibbs现象,而且不连续的跃变点也扩展成了有一定上升时间的连续函数。

图3-1 方波展开成有限长FS后,在跃变点的附近产生Gibbs现象

为了消除这种频域截断形成的Gibbs现象,通常不采用矩形窗作截断处理,而是采用汉宁(Hanning)窗、海明(Hamming)窗或三角窗等进行加权计算。

1、以0点为中心的Hanning窗(也称为升余弦窗)定义为

2?k?1) k?K/2 (8) ?(1?cosw(k)??2 K? otherwise?0 2、以0点为中心的Hamming窗定义为

2?k? k?K/2 (9) ?0.54?0.46cosw(k)?? K? otherwise?0 3、以0点为中心的三角窗(Bartlett窗)定义为

?2k k?K/2 (10) ?1?w(k)?? K?0 otherwise?图3-2中列出了矩形窗、三角窗、Hanning窗和Hamming窗的图像,可以比较它们的差异和类同之处。

第10页

信号与系统实验指导书

w(k) w(k) 1 1

-K/2 0 K/2 -K/2 0 K/2

(a) 矩形窗 (b) 三角窗

w(k) w(k) 1 1

-K/2 0 K/2 -K/2 0 K/2 (c) Hanning窗 (d) Hamming窗

图 3-2 几种加权窗函数的比较

例如图3-1中的方波信号展开式用Hanning窗加权截断后,图像如图3-3所示,显然Gibbs现象已经基本消除。

x(t) 1 -2 -1 0 1 2 t 图 3-4 奇谐方波

图 3-3 用Hanning窗加权后方波FS的跃变点附近的Gibbs现象的消除

采用频域Hanning窗加权或Hamming窗加权的方法进行截断,与矩形截断相比,可以减弱或消除Gibbs现象,但不会减小由于频域截断产生的误差,反而因加权导致所截取区域内频谱发生变化,增大了误差。 三、实验内容:

1、将如图3-4所示的奇谐周期方波信号展开成Fourier级数并分别采用频域矩形窗和Hanning窗加权,绘制两种窗函数加权后的方波合成图像。该方波信号的周期为T1=1,振动幅度为A=1。抽样周期选为Ts?0.004。

提示:由于该信号是奇谐对称周期函数,展开式中将只有正弦函数的奇次谐波,即

x(n)?kk?1,3,5,??b?sin2?knWK(k) N其中N?T1,系数bk由(2)式得

Ts4 bk?T1?T1/20x(t)sin2?k4tdt? k?1,3,5,? T1?k采用Hanning窗加权,则展开式变为

第11页

信号与系统实验指导书

x(n)??2?(2k?1)42(2k?1)?[0.5?0.5cos]sinn

(2k?1)?KNk?0K2、将图3-5中的锯齿波展开为Fourier级数,按(2)式求出Fourier级数的系数,并在频域分别采用矩形窗、Hanning窗和三角窗加权,观察其Gibbs效应及其消除情况。

x(t) 1 -3 -2 -1 0 1 2 3 t 图 3-5 锯齿波

3、选做:编程计算连续时间周期信号的三角形式傅里叶级数展开的系数。

第12页

信号与系统实验指导书

实验四 连续时间系统的时域分析

一、实验目的:

1、熟悉连续时间系统的线性和时不变性质。 2、掌握线性时不变系统的单位冲激响应的概念。

3、掌握线性时不变系统的微分方程描述方法及其MATLAB编程的求解方法。 二、实验原理:

(一)线性时不变(LTI)系统

在分析连续时间系统时,有关系统的两个重要的性质就是线性(Linearity)和时不变性(Time-invariance)。所谓线性是指系统同时满足齐次性和可加性。这可以用下面的方法来描述。

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

x(t) = x1(t) + x2(t) (a) y(t) = y1(t) + y2(t) (b)

则该系统具有可加性(Additivity)。如果满足

x(t) = ax1(t) (a) y(t) = ay1(t) (b)

则该系统具有齐次性(Homogeneity)。如果系统同时具有可加性和齐次性则系统是线性。

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

同时具有线性和时不变性的系统,叫做线性时不变系统,简称LTI系统。 (二)LTI系统的微分方程描述

线性常系数微分方程是描述LTI系统的一种时域模型。一个连续时间LTI系统,它的输入信号x(t)和输出信号y(t)的关系可以用下面的微分方程来表达。

Ndky(t)Mdkx(t)ak??bk (1) ?kkdtdtk?0k?0在MATLAB中,我们可用向量a=[aN,aN-1,??a1,a0]和b=[bN,bN-1,??b1,b0] 来表示该系统,其中a和b分别为(1)式中方程左右两端的系数向量。

注意,向量 a 和 b 的元素一定要以微分方程中时间求导的降幂次序来排列, 且缺项要用 0 来补齐。

例如,对微分方程 y’’(t)+3y’(t)+2y(t)=x’’(t)+x(t),则表示该系统的对应向量应为a=[1 3 2],b=[1 0 1]。

(1)式描述了LTI系统输入信号和输出信号的一种隐性关系,式中,max (N, M)定义为系统的阶。为了求得系统响应信号的显式表达式,必须求解微分方程。

第13页

信号与系统实验指导书

MATLAB的内部函数impulse( ),step( ),initial( ),lsim( ) 可以用来计算并绘制连续时间LTI系统的单位冲激响应,单位阶跃响应,零输入响应和任意信号作用于系统的零状态响应。

1、impulse( )函数

该函数有如下几种调用格式:

(1)impulse(b,a):该调用格式以默认方式绘出向量 a 和 b 定义的连续系统的单位冲激响应的时域波形。

(2)impulse(b,a,t):绘出系统在 0~t 时间范围内冲激响应的时域波形。 (3)impulse(b,a,t1:p:t2):绘出在 t1~t2 时间范围内,以p为步长的单位冲激响应波形。

(4)y=impulse(b,a,t):不绘出波形,而是求出系统冲激响应的数值解。y的点数默认值为101点,由此可得时间步长为p = t/(101-1)。

(4)y=impulse(b,a,t1:p:t2): 计算在t1~t2 时间范围内,以p为步长的单位冲激响应的数值。

2、 step( )函数

该函数和 impulse( )函数的调用方法一样。 3、lsim( )函数

带返回值的形式如y = lsim(b, a, x, t)用来计算由a和b表示的LTI系统在输入信号x作用下的零状态响应。其中t为指定的时间变化范围,x为输入信号,它们的长度应该是相同的。如带返回参数y,则将计算的响应信号保存在y中,若不带返回参数y,则直接在屏幕上绘制输入信号x和响应信号的波形。 三、实验内容:

已知描述某连续系统的微分方程为:

d2y(t)dy(t)4??6y(t)?x(t)

dtdt21、求出该系统在 0~30 秒范围内,以时间间隔 0.1 秒取样的单位冲激响应和单位阶跃响应的数值解,并绘制时域波形;

2、计算并绘制该系统在输入信号为x(t) = (e-2t - e-3t)u(t)时的零状态响应。

第14页

信号与系统实验指导书

实验五 连续时间系统的频域分析

一、实验目的:

1、掌握系统频率响应特性的概念及其物理意义。

2、掌握系统频率响应特性的计算方法和特性曲线的绘制方法,理解具有不同频率响应特性的滤波器对信号的滤波作用。

3、掌握用MATLAB语言进行系统频响特性分析的方法。 二、实验原理:

1、连续时间LTI系统的频率响应

所谓频率响应特性,是指系统在正弦信号激励下的稳态响应随频率变化的情况,包括响应的幅度随频率的变化情况和响应的相位随频率的变化情况两个方面。

y(t)LTI系统(t)上图中x(t)、y(t)x分别为系统的时域激励信号和响应信号,h(t)是系统的单位冲激响h(t)Y(j?)X(j?)y(t)?xH?(t()j*h)(t),由傅里叶变换的时域卷积定理可得到: 应,它们三者之间的关系为Y(j?)?X(j?)H(j?) 3.1

Y(j?)或者: H(j?)? 3.2

X(j?)连续时间LTI系统的时域及频域分析图 H(j?)为系统的频域数学模型,即系统的频率响应特性,它实际上就是系统的单位冲激响应h(t)的傅里叶变换。即

?H(j?)??h(t)e?j?tdt 3.3

??由于H(j?)实际上是系统单位冲激响应h(t)的傅里叶变换,如果h(t)是收敛的,或者说是绝对可积的,那么H(j?)一定存在,而且H(j?)通常是复数,因此,也可以表示成复数的不同表达形式。在研究系统的频率响应时,更多的是把它表示成极坐标形式:

H(j?)?H(j?)ej?(?) 3.4

上式中,H(j?)称为幅度频率响应,反映信号经过系统之后,信号各频率分量的幅度发生变化的情况,?(?)称为相位特性,反映信号经过系统后,信号各频率分量在相位上发生变换的情况。H(j?)和?(?)都是频率?的函数。

当信号x(t)?ej?0t作用于频率响应特性为H(j?)的系统时,其响应信号为

y(t)?H(j?0)ej?0t?H(j?0)ej?(?0)ej?0t?H(j?0)ej(?0t??(?0)) 3.5 若输入信号为正弦信号,即x(t)?sin(?0t),则响应为

y(t)?H(j?0)sin(?0t)?|H(j?0)|sin(?0t??(?0)) 3.6

可见,系统对输入信号某一频率分量的影响表现为两个方面,一是信号的幅度要被H(j?)加权,二是信号的相位要被?(?)移相。

由于H(j?)和?(?)都是频率?的函数,所以,系统对不同频率的频率分量造成的幅度和相位上的影响是不同的。

第15页

信号与系统实验指导书

2、MATLAB中计算系统频率响应的函数

在本实验中,同样用微分方程两端的系数向量a和b来表示连续时间LTI系统。相应的计算系统频率响应的函数如下:

[H,w] = freqs(b,a):返回的频率响应在各频率点的样点值(复数)存放在H中,系统默认的样点数为200点;

Mag = abs(H):求系统的幅度频率响应,返回值存于Hm之中; Phi= angle(H):求系统的相位响应特性; real(H):求H的实部; imag(H):求H的虚部;

计算频率响应的函数freqs()的另一种形式是:

H = freqs(b,a,w):在指定的频率范围内计算系统的频率响应特性。在使用该函数前,要先定义频率变量w。 三、实验内容:

已知描述某连续系统的微分方程为:

d2y(t)dy(t)dx(t)??25y(t)?2 dtdtdt21、计算并绘制该系统的幅度响应特性、相位响应特性、频率响应的实部和频率响应的虚部曲线图。

2、根据绘制的幅度频率响应曲线,判断该系统属于何种滤波器(低通、高通、带通、全通还是带阻)?

实验六 连续时间系统的复频域分析

一、实验目的:

1、熟悉拉普拉斯变换的物理意义及基本性质。

2、掌握用拉普拉斯变换求解连续时间LTI系统的时域响应的方法。

第16页

信号与系统实验指导书

3、掌握系统函数的概念,掌握系统函数的零、极点分布(零、极点图)与系统的稳定性、时域特性等之间的相互关系。

4、掌握用MATLAB语言对系统进行变换域分析的编程方法。 5、掌握用MATLAB求解拉普拉斯反变换的方法。 二、实验原理:

1、连续时间LTI系统的复频域描述

除了时域描述系统的数学模型微分方程以外,描述系统的另一种数学模型就是建立在拉普拉斯变换基础上的“系统函数(System Function)”——H(s): H(s)?Y(s)?系统冲激响应的拉换氏L?变y(t)? 5.1

X(s)?系统激励信号的拉换氏L?变x(t)?系统函数H(s)的实质就是系统单位冲激响应h(t)的拉普拉斯变换。因此,系统函数

?也可以定义为:H(s)????sth(t)edt。因此求系统函数的方法,除了按照定义式的方法之?外,更常用的是对描述系统的线性常系数微分方程经过拉氏变换之后得到系统函数H(s)。

假设描述一个连续时间LTI系统的线性常系数微分方程为:

dky(t)Mdkx(t) ?ak 5.2 ??bkkkdtdtk?0k?0N对5.2式两边做拉普拉斯变换,则有

?asY(s)??bskkkk?0k?0MNMkX(s)

k即 H(s)?Y(s)?X(s)?bsk?ak?0k?0N 5.3

ksk5.3式说明,对于一个能够用线性常系数微分方程描述的连续时间LTI系统,它的系统函数是一个关于复变量s的有理多项式的分式,其分子和分母的多项式系数与系统微分方程左右两端的系数是对应的。由此,可以很容易的根据微分方程写出系统函数表达式,或者根据系统函数表达式写出系统的微分方程。

系统函数H(s)大多数情况下是复变函数,因此,H(s)可以有多种表示形式: (1)直角坐标形式:H(s)?Re(s)?jIm(s)

k?(s?zj)(2)零极点形式:H(s)?j?1M?(s?p)ii?1N

第17页

信号与系统实验指导书

(3)部分分式和形式:H(s)??Ak(假设N>M,且无重极点)

k?0s?skN根据所要分析的问题的不同,可以采用不同形式的系统函数H(s)表达式。在MATLAB中,是用系统函数的分子、分母多项式的系数向量来表示H(s)。由于系统函数的分母、分子的多项式系数与系统微分方程左右两端的系数是对应的,因此,此实验中各函数用到的向量a、b和前面实验中微分方程左右两端的系数向量是相同的。

2、应用拉普拉斯变换分析系统的主要内容 (1)求系统的频率响应; (2)求系统的单位冲激响应;

(3)绘制系统函数的零极点图,判断系统的稳定性 MATLAB中相应的复频域分析函数如下:

H = freqs(b,a,w):计算由系数向量b,a描述的系统的频率响应特性。返回值H为频率向量w规定的范围内的频率响应向量值。如果不带返回值H,则执行此函数后,将直接绘制出系统的对数频率响应曲线(包括幅频特性曲线和相频特性曲线)。

H = impulse(b,a):求系统的单位冲激响应,若不带返回值,则直接绘制响应曲线,带返回值则将冲激响应数值存于向量H中。注意:MATLAB总是把由分子和分母多项式表示的任何系统都当作是因果系统。所以,利用impulse ()函数求得的单位冲激响应总是因果信号。

[z,p,k] = tf2zp(b,a):求系统函数的零极点,返回值z为零点行向量,p为极点行向量,k为系统传递函数的零极点形式的增益。b为系统函数分子多项式的系数向量,a为系统函数分母多项式系数向量。

[x,y] = meshgrid(x1,y1):在由x1,y1确定具体的区域范围内产生绘制s平面图的区域。

meshgrid(x,y,fs):绘制系统函数的零极点曲面图。

系统的稳定性主要取决于系统函数的收敛域是否包含整个虚轴,因此要根据系统的其他性质结合零极点图得出系统函数的收敛域,进而判断系统的稳定性,而系统的因果性则取决于系统极点位置的分布。

3、拉普拉斯反变换的计算

计算拉普拉斯反变换通常有长除法和部分分式展开法。MATLAB的内部函数residue( )可以实现部分分式的展开。

例:已知某信号的拉普拉斯变换表达式为

1 X(s)?2

s?3s?2求该信号的时域表达式。

解:由于题目没有指定收敛域,所以必须考虑所有可能的情况。为此,可以先计算出该信号的拉普拉斯变换表达式的极点。很显然,X(s)有两个极点,分别为 s = -1,s = -2。

第18页

信号与系统实验指导书

在MATLAB命令窗口键入: >> b = 1; >> a = [1 3 2];

>> [r, p, k] = residue (b, a) 命令窗口立即给出计算结果为: r = -1 1 p = -2 -1 k = [ ]

根据r、p、k之值,可以写出X(s)的部分分式和的表达式为:

11X(s)???

s?2s?1然后根据不同的收敛域,可写出X(s)的时域表达式x(t)。 第一种情况为Re{s} < -2,则x(t)为左边信号,其数学表达式为

x(t)?e?2tu(?t)?e?tu(?t)

第二种情况为-2 < Re{s} < -1,则x(t)为双边信号,其数学表达式为

x(t)??e?2tu(t)?e?tu(?t)

第三种情况为Re{s} > -1,则x(t)为因果信号,其数学表达式为

x(t)??e?2tu(t)?e?tu(t)

在这个例题中,函数residue( )仅仅完成了部分分式展开的任务,至于反变换的数学表达式还得结合收敛域的不同才能写出。

如果X(s)的分子的阶数不小于分母的阶数,则k将不是一个空矩阵,例如,当

s3X(s)?2时,在命令窗口中键入:

s?3s?2>> b = [1 0 0 0]; >> a = [1 3 2]; >> [r,p,k]=residue(b,a) 则: r = 8 -1 p =

第19页

信号与系统实验指导书

-2 -1 k =

1 -3

这里的k = [1 3],实际上是将X(s)做了一个长除法后,得到的商的多项式。所以,根据上面的r、p、k的值,可写出X(s)的部分分式和的表达式为:

81? X(s)?s?3? s?2s?1有关函数residue( )的详细用法,可查阅MATLAB帮助文件。

Q5-3 编写程序Q5_3,能够接受从键盘输入的系统函数的分子分母多项式系数向量,并绘制出系统的零极点图、系统的单位冲激响应、系统的幅度频率响应和相位频率相应的图形。各个子图要求按照图5.3布置。 三、实验内容:

已知某连续因果系统的微分方程为:

d3y(t)d2y(t)dy(t)1d2x(t)?2?2?y(t)???x(t) a=1 322dtadtdtdt1、写出该系统的系统函数表达式。

2、绘制该系统的幅度响应特性、相位响应特性曲线图,并判断该系统具有何种滤波特性。

3、绘制该系统的零极点图,判断该系统的稳定性。 4、写出该系统的单位冲激响应h(t)。

5、选做:改变方程中的a值,分别取0.6、0.8、4、16等不同的值,观察a取不同的值时系统的幅度频率响应特性曲线的变化(带宽、过渡带宽和阻带衰减等),说明零点位置对系统滤波特性的影响。

6、已知该系统的输入信号为x(t)?sin(t)?sin(8t),要求输出信号y(t)?Ksin(t),K为一个不为零的常数,根据5中不同a值得到的幅度频率响应曲线,选择一个合适的a值使得本系统能够满足该滤波要求。

实验七 设计性实验

一、SIMULINK简介:

SIMULINK是MATLAB软件的扩展,它是实现动态系统建模和仿真的一个软件包,它与MATLAB语言的主要区别在于,其与用户交互接口是基于Windows的模型化图形

第20页

信号与系统实验指导书

输入,这使得用户可以把更多的精力投入到系统模型的构建,而非语言的编程上。

所谓模型化图形输入是指SIMULINK提供了一些按功能分类的基本的系统模块,用户只需要知道这些模块的输入输出及模块的功能,而不必考察模块内部是如何实现的,通过对这些基本模块的调用,再将它们连接起来就可以构成所需要的系统模型(以.mdl文件进行存取),进而进行仿真与分析。 二、SIMULINK的模块库介绍:

SIMILINK模块库按功能进行分类,主要包括以下子库:Continuous(连续模块)、Discrete(离散模块)、Logic and Bit Operation(逻辑和位运算模块)、Math Operation(数学运算模块)、Sinks(接收器模块)、Sources(输入源模块)

各模块的作用及用法可查阅MATLAB帮助文件。

三、SIMULINK简单模型的建立及模型特点:

1、简单模型的建立 (1)建立模型窗口

(2)将功能模块由模块库窗口复制(或拖)到模型窗口 (3)对模块进行连接,从而构成需要的系统模型 2、模型的特点

(1)在SIMULINK里提供了许多如Scope的接收器模块,这使得用SIMULNK进行仿真具有像做实验一般的图形化显示效果。

(2)SIMULINK的模型具有层次性,通过底层子系统可以构建上层母系统。 (3)SIMULINK提供了对子系统进行封装的功能,用户可以自定义子系统的图标和设置参数对话框。

四、SIMULINK功能模块的处理:

功能模块的基本操作,包括模块的移动、复制、删除、转向、改变大小、模块命名、颜色设定、参数设定、属性设定、模块输入输出信号等。 五、SIMULINK线的处理

SIMULINK模型的构建是通过用线将各种功能模块进行连接而构成的。用鼠标可以在功能模块的输入与输出端之间直接连线。所画的线可以改变粗细、设定标签,也可以把线折弯、分支。 六、SIMULINK自定义功能模块

自定义功能模块有两种方法,一种方法是采用Subsystem功能模块,利用其编辑区设计组合新的功能模块;另一种方法是将现有的多个功能模块组合起来,形成新的功能模块。对于较大的SIMULINK模型,通过自定义功能模块可以简化图形,减少功能模块的个数,有利于模型的分层构建。

方法一:将Subsystem功能模块复制到打开的模型窗口中,双击Subsystem功能模

第21页

信号与系统实验指导书

块,进入自定义功能模块窗口,从而可以利用已有的基本功能模块设计出新的功能模块。

方法二:在模型窗口中建立所定义功能模块的子模块,用鼠标将这些需要组合的功能模块框住,然后选择Edit菜单下的Create Subsystem即可。

自定义功能模块的封装:前面提到的两种方法都只是创建一个功能模块而已,如果要命名该自定义功能模块、对功能模块进行说明、选定模块外观、设定输入数据窗口,则需要对其进行封装处理。首先选中Subsystem功能模块,再打开Edit菜单中的Mask Subsystem进入mask的编辑窗口,通过3个标签页Icon、Initialization、Documentation分别进行功能模块外观的设定输入数据窗口的设定、功能模块的文字说明的设计。

七、SIMULINK仿真的运行

构建好一个系统的模型之后,接下来的事情就是运行模型,得出仿真结果。运行一个仿真的完整过程分成三个步骤:设置仿真参数,启动仿真和仿真结果分析。

一、设置仿真参数和选择解法器

选择Simulation菜单下的Parameters命令,在弹出的仿真参数对话框中主要通过三个页面来管理仿真的参数:Solver页、Workspace I/O页和Diagnostics页。Solver页允许用户设置仿真的开始和结束时间,选择解法器,说明解法器参数及选择一些输出选项。Workspace I/O页主要用来设置SIMULINK与MATLAB工作空间交换数值的有关选项。Diagnostics页,允许用户选择Simulink在仿真中显示的警告信息的等级。

二、启动仿真

设置仿真参数和选择解法器之后,就可以启动仿真而运行。选择Simulink菜单下的start选项来启动仿真,如果模型中有些参数没有定义,则会出现错误信息提示框。如果一切设置无误,则开始仿真运行,结束时系统会发出一鸣叫声。 八、实验内容及要求:

熟悉Simulink的使用方法之后,结合所学理论知识及已做过的实验内容,设计一实验项目,实验题目、实验目的、实验原理及内容自拟。

实验项目参考:

1、连续时间周期信号的分解与合成 2、连续时间系统的滤波功能的实现 3、信号的幅度调制与解调

4、连续时间信号的抽样(抽样定理的验证)

第22页