matlab实验报告3.docx

上传人:b****8 文档编号:29830768 上传时间:2023-07-27 格式:DOCX 页数:18 大小:199.51KB
下载 相关 举报
matlab实验报告3.docx_第1页
第1页 / 共18页
matlab实验报告3.docx_第2页
第2页 / 共18页
matlab实验报告3.docx_第3页
第3页 / 共18页
matlab实验报告3.docx_第4页
第4页 / 共18页
matlab实验报告3.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

matlab实验报告3.docx

《matlab实验报告3.docx》由会员分享,可在线阅读,更多相关《matlab实验报告3.docx(18页珍藏版)》请在冰豆网上搜索。

matlab实验报告3.docx

matlab实验报告3

 

实验报告

 

实验四、LTI系统的响应

 

课程名称:

MATLAB应用技术专业班级:

通信1422

学生学号:

1430119231学生姓名:

周妍智

所属院部:

电子信息工程系指导教师:

徐树梅

2015——2016学年第二学期

 

 

实验项目名称:

LTI系统的响应实验学时:

16

学生姓名:

周妍智实验地点:

微机11

实验日期:

2016.4.17实验成绩:

批改教师:

徐树梅批改时间:

一、  实验目的

1. 熟悉连续时间系统的单位冲激响应、阶跃响应的意义及求解方法

2. 熟悉连续(离散)时间系统在任意信号激励下响应的求解方法

3. 熟悉应用MATLAB实现求解系统响应的方法

二、 实验原理

1.连续时间系统

对于连续的LTI系统,当系统输入为f(t),输出为y(t),则输入与输出之间满足如下的线性常系数微分方程:

,当系统输入为单位冲激信号δ(t)时产生的零状态响应称为系统的单位冲激响应,用h(t)表示。

若输入为单位阶跃信号ε(t)时,系统产生的零状态响应则称为系统的单位阶跃响应,记为g(t),如下图所示。

系统的单位冲激响应h(t)包含了系统的固有特性,它是由系统本身的结构及参数所决定的,与系统的输入无关。

我们只要知道了系统的冲激响应,即可求得系统在不同激励下产生的响应。

因此,求解系统的冲激响应h(t)对我们进行连续系统的分析具有非常重要的意义。

在MATLAB中有专门用于求解连续系统冲激响应和阶跃响应,并绘制其时域波形的函数impulse()和step()。

如果系统输入为f(t),冲激响应为h(t),系统的零状态响应为y(t),则有:

若已知系统的输入信号及初始状态,我们便可以用微分方程的经典时域求解方法,求出系统的响应。

但是对于高阶系统,手工计算这一问题的过程非常困难和繁琐。

在MATLAB中,应用lsim()函数很容易就能对上述微分方程所描述的系统的响应进行仿真,求出系统在任意激励信号作用下的响应。

lsim()函数不仅能够求出连续系统在指定的任意时间范围内系统响应的数值解,而且还能同时绘制出系统响应的时域波形图。

以上各函数的调用格式如下:

⑴impulse()函数

   函数impulse()将绘制出由向量a和b所表示的连续系统在指定时间范围内的单位冲激响应h(t)的时域波形图,并能求出指定时间范围内冲激响应的数值解。

       impulse(b,a)    以默认方式绘出由向量a和b所定义的连续系统的冲激响应的时域波形。

       impulse(b,a,t0)       绘出由向量a和b所定义的连续系统在0~t0时间范围内冲激响应的时域波形。

       impulse(b,a,t1:

p:

t2)     绘出由向量a和b所定义的连续系统在t1~t2时间范围内,并且以时间间隔p均匀取样的冲激响应的时域波形。

       y=impulse(b,a,t1:

p:

t2)    只求出由向量a和b所定义的连续系统在t1~t2时间范围内,并且以时间间隔p均匀取样的冲激响应的数值解,但不绘出其相应波形。

 ⑵step()函数

函数step()将绘制出由向量a和b所表示的连续系统的阶跃响应,在指定的时间范围内的波形图,并且求出数值解。

和impulse()函数一样,step()也有如下四种调用格式:

step(b,a)

step(b,a,t0)

step(b,a,t1:

p:

t2)

y=step(b,a,t1:

p:

t2)

上述调用格式的功能和impulse()函数完全相同,所不同只是所绘制(求解)的是系统的阶跃响应g(t),而不是冲激响应h(t)。

 ⑶lsim()函数

根据系统有无初始状态,lsim()函数有如下两种调用格式:

①系统无初态时,调用lsim()函数可求出系统的零状态响应,其格式如下:

        lsim(b,a,x,t)   绘出由向量a和b所定义的连续系统在输入为x和t所定义的信号时,系统零状态响应的时域仿真波形,且时间范围与输入信号相同。

其中x和t是表示输入信号的行向量,t为表示输入信号时间范围的向量,x则是输入信号对应于向量t所定义的时间点上的取样值。

        y=lsim(b,a,x,t)  与前面的impulse和step函数类似,该调用格式并不绘制出系统的零状态响应曲线,而只是求出与向量t定义的时间范围相一致的系统零状态响应的数值解。

②系统有初始状态时,调用lsim()函数可求出系统的全响应,格式如下:

        lsim(A,B,C,D,e,t,X0)    绘出由系数矩阵A,B,C,D所定义的连续时间系统在输入为e和t所定义的信号时,系统输出函数的全响应的时域仿真波形。

t为表示输入信号时间范围的向量,e则是输入信号e(t)对应于向量t所定义的时间点上的取样值,X0表示系统状态变量X=[x1,x2,…..xn]'在t=0时刻的初值。

        [Y,X]=lsim(A,B,C,D,e,t,X0) 不绘出全响应波形,而只是求出与向量t定义的时间范围相一致的系统输出向量Y的全响应以及状态变量X的数值解。

显然,函数lsim()对系统响应进行仿真的效果取决于向量t的时间间隔的密集程度,t的取样时间间隔越小则响应曲线越光滑,仿真效果也越好。

说明:

(1)当系统有初始状态时,若使用lsim()函数求系统的全响应,就要使用系统的状态空间描述法,即首先要根据系统给定的方式,写出描述系统的状态方程和输出方程。

假如系统原来给定的是微分方程或系统函数,则可用相变量法或对角线变量等方法写出系统的状态方程和输出方程。

其转换原理如前面实验四所述。

(2)显然利用lsim()函数不仅可以分析单输入单输出系统,还可以分析复杂的多输入多输出系统。

例题1:

若某连续系统的输入为e(t),输出为r(t),系统的微分方程为:

①求该系统的单位冲激响应h(t)及其单位阶跃响应g(t)。

②若

求出系统的零状态响应y(t)

分析:

   ①求冲激响应及阶跃响应的MATLAB程序:

a=[1 5 6];b=[3 2];

subplot(2,1,1),impulse(b,a,4)

subplot(2,1,2),step(b,a,4)

运行结果如右:

   ②求零状态响应的MATLAB程序:

a=[1 5 6];b=[3 2];

p1=0.01;           %定义取样时间间隔为0.01

t1=0:

p1:

5;          %定义时间范围

x1=exp(-2*t1);      %定义输入信号

lsim(b,a,x1,t1),      %对取样间隔为0.01时系统响应进行仿真

holdon;            %保持图形窗口以便能在同一窗口中绘制多条曲线

p2=0.5;            %定义取样间隔为0.5

t2=0:

p2:

5;          %定义时间范围

x2=exp(-2*t2);      %定义输入信号

lsim(b,a,x2,t2),holdoff  %对取样间隔为0.5时系统响应进行仿真并解除保持

运行结果如下:

 

 

例题2 已知一个过阻尼二阶系统的状态方程和输出方程分别为:

  ,   r(t)=[0 1]X(t) 。

若系统初始状态为X(0)=[4 -5]T ,求系统在

作用下的全响应。

求全响应程序如下:

A=[0 1;-2 -3];B=[0 2]';C=[0 1];D=[0];

X0=[4 -5]';                      %定义系统初始状态

t=0:

0.01:

10;                      

E=[3*exp(-4*t).*ones(size(t))]'; %定义系统激励信号

[r,x]=lsim(A,B,C,D,E,t,X0);  %求出系统全响应的数值解

plot(t,r)                          %绘制系统全响应波形

运行结果如右。

2.离散时间系统

LTI离散系统中,其输入和输出的关系由差分方程描述:

        (前向差分方程)

       (后向差分方程)

当系统的输入为单位序列δ(k)时产生的零状态响应称为系统的单位函数响应,用h(k)表示。

当输入为ε(k)时产生的零状态响应称为系统的单位阶跃应,记为:

g(k),如下图所示。

如果系统输入为e(k),冲激响应为h(k),系统的零状态响应为y(k),则有:

与连续系统的单位冲激响应h(t)相类似,离散系统的单位函数响应h(k)也包含了系统的固有特性,与输入序列无关。

我们只要知道了系统的单位函数响应,即可求得系统在不同激励信号作用下产生的响应。

因此,求解系统的单位函数响应h(k)对我们进行离散系统的分析也同样具有非常重要的意义。

MATLAB中为用户提供了专门用于求解离散系统单位函数响应,并绘制其时域波形的函数impz()。

同样也提供了求离散系统响应的专用函数filter(),该函数能求出由差分方程所描述的离散系统在指定时间范围内的输入序列作用时,产生的响应序列的数值解。

当系统初值不为零时,可以使用dlsim()函数求出离散系统的全响应,其调用方法与前面连续系统的lsim()函数相似。

另外,求解离散系统阶跃响应可以通过如下两种方法实现:

一种是直接调用专用函数dstep(),其调用方法与求解连续系统阶跃响应的专用函数step()的调用方法相似;另一种方法是利用求解离散系统零状态响应的专用函数filter(),只要将其中的激励信号看成是单位阶跃信号ε(k)即可。

函数的调用格式分别如下:

⑴impz()函数

        impz(b,a)    以默认方式绘出由向量a和b所定义的离散系统单位函数响应的时域波形。

        impz(b,a,n)    绘出由向量a和b所定义的离散系统在0~n(n必须为整数)的离散时间范围内单位函数响应的时域波形。

        impz(b,a,n1:

n2)     绘出由向量a和b所定义的离散系统在n1~n2(n1、n2必须为整数)的离散时间范围内单位函数响应的时域波形。

        y=impz(b,a,n1:

n2)    求出由向量a和b所定义的离散系统在n1~n2(n1、n2必须为整数)的离散时间范围内单位函数响应的数值解,但不绘出波形。

⑵filter()函数

        filter(b,a,x)    其中a和b与前面相同,x是包含输入序列非零样值点的的行向量。

此命令将求出系统在与x的取样时间点相同的输出序列样值。

例题:

已知描述离散系统的差分方程为:

,且已知系统输入序列为

①求出系统的单位函数响应h(k)在-3~10离散时间范围内响应波形。

②求出系统零状态响应在0~15区间上的样值;并画出输入序列的时域波形以及系统零状态响应的波形

  分析:

①求系统的单位函数响应的MATLAB程序:

     a=[1,-0.25,0.5];     b=[1,1,0];         

     impz(b,a,-3:

10),title('单位响应')          %绘出单位函数响应在-3~10区间上的波形

     运行结果如图a。

②求零状态响应的MATLAB程序:

a=[1,-0.25,0.5];b=[1,1,0]

k=0:

15;             %定义输入序列取值范围

x=(1/2).^k;          %定义输入序列表达式

y=filter(b,a,x)        %求解零状态响应样值

subplot(2,1,1),stem(k,x)   %绘制输入序列的波形   

title('输入序列')

subplot(2,1,2),stem(k,y)%绘制零状态响应的波形

title('输出序列')

运行结果如下:

y=

 Columns1through10

   1.0000   1.7500   0.6875  -0.3281  -0.23830.1982   0.2156  -0.0218  -0.1015  -0.0086

 Columns11through16

0.0515   0.0187  -0.0204  -0.0141   0.00690.0088

图a.①运行结果图b.②运行结果

三、  实验内容

1.已知描述系统的微分方程和激励信号e(t)分别如下,试用解析方法求系统的单位冲激响应h(t)和零状态响应r(t),并用MATLAB绘出系统单位冲激响应和系统零状态响应的波形,验证结果是否相同。

     

  a=[144];b=[13];

t=0:

0.01:

5;

f=exp(-t);

subplot(2,1,1),impulse(b,a,t);

title('单位冲激响应');

subplot(2,1,2),lsim(b,a,f,t);

title('零状态响应');

 

a=[1226];b=[1];

t=0:

0.01:

5;

f=stepfun(t,0);

subplot(2,1,1),impulse(b,a,t);

subplot(2,1,2),lsim(b,a,f,t);

  

        

a=[143];b=[1];

t=0:

0.01:

5;

f=exp(-2*t);

subplot(2,1,1),impulse(b,a,t);

subplot(2,1,2),lsim(b,a,f,t);

④如下图所示的电路中,已知

,且两电感上初始电流分别为

,如果以电阻

上电压

作为系统输出,请求出系统在激励

(v)作用下的全响应。

A=[-84;4-8];B=[10]';C=[4-4];D=[0];

X=[20];

t=0:

0.01:

2;

f=12*st

epfun(t,0);

lsim(A,B,C,D,f,t,X);

2.请用MATLAB分别求出下列差分方程所描述的离散系统,在0~20时间范围内的单位函数响应、阶跃响应和系统零状态响应的数值解,并绘出其波形。

另外,请将理论值与MATLAB仿真结果在对应点上的值作比较,并说出两者的区别和产生误差的原因。

  

a=[121];b=[100];

k=0:

20;

f=(1/4)*stepfun(k,0);

y=filter(b,a,f);

subplot(3,1,1),impz(b,a,k);

title('单位函数响应')

subplot(3,1,2),dstep(b,a,k);

title('单位阶跃响应')

subplot(3,1,3),stem(k,y,'filleed');

title('零输入响应')

   

 a=[1-0.70.1];b=[7-20];

k=0:

20;

f=stepfun(k,0);

y=filter(b,a,f);

subplot(3,1,1),impz(b,a,k);

title('单位函数响应')

subplot(3,1,2),dstep(b,a,k);

title('单位阶跃响应')

subplot(3,1,3),stem(k,y,'filled');

title('零输入响应')

a=[1-5/61/6];b=[10-1];

k=0:

20;

f=stepfun(k,0);

y=filter(b,a,f);

subplot(3,1,1),impz(b,a,k);

title('单位函数响应')

subplot(3,1,2),dstep(b,a,k);

title('单位阶跃响应')

subplot(3,1,3),stem(k,y,'filleed');

title('零输入响应')

④一带通滤波器可由下列差分方程描述:

, 其中

为系统输入,

为系统输出。

请求出当激励为

(选取适当的n值)时滤波器的稳态输出。

a=[100.81];b=[10-1];

k=0:

20;n=2;

f=10+10*cos(k*n/2)+10*cos(k*n).*stepfun(k,0);

y=filter(b,a,f);

subplot(3,1,1),impz(b,a,k);

subplot(3,1,2),dstep(b,a,k);

subplot(3,1,3),stem(k,f,'filled');

四、 预习要求

1.熟悉系统响应的求解方法

2.了解MATLAB语言中关于系统分析的各个函数如:

impulse、step、lsim、impz、filter等函数的调用方法:

五、实验报告要求

1.理论上计算出系统的单位冲激响应/单位函数响应、阶跃响应、零状态响应、全响应的表达式,并写出解题过程。

2.记录仿真结果(包括数据和波形)。

     

3.写出程序清单。

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

当前位置:首页 > 高等教育 > 文学

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

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