《MATLAB信号处理超级学习手册》——2.4 连续时间系统的时域分析

2.4 连续时间系统的时域分析

MATLAB信号处理超级学习手册
2.4.1 连续时间系统求解
连续时间线性非时变系统(LTI)可以用如下的线性常系数微分方程来描述:

系统的响应一般包括两个部分,即由当前输入所产生的响应(零状态响应)和由历史输入(初始状态)所产生的响应(零输入响应)。

对于低阶系统,一般可以通过解析的方法得到响应。但是,对于高阶系统,手工计算就比较困难,这时MATLAB强大的计算功能就比较容易确定系统的各种响应,如冲激响应、阶跃、零状态响应、全响应等。

涉及到的MATLAB函数有:impulse(冲激响应)、step(阶跃)、roots(零输入响应)、lsim(零状态响应)等。在MATLAB中,要求以系统向量的形式输入系统的微分方程,因此,在使用前必须对系统的微分方程进行变换,得到其传递函数。其分别用向量a和b表示分母多项式和分子多项式的系数(按照s的降幂排列)。

根据系统的单位冲激响应,利用卷积计算的方法,也可以计算任意输入状态下系统的零状态响应。设一个线性零状态系统,已知系统的单位冲激响应为h(t),当系统的激励信号为f(t)时,系统的零状态响应为:

式中y zs(k)、f(k)、h(k)分别对应以T为时间间隔对连续时间信号y zs(t)、f(t)和h(t)进行采样得到的离散序列。

2.4.2 连续时间系统数值求解
在MATLAB中,控制系统工具箱提供了一个用于求解零初始条件微分方程数值解的函数lsim。其调用格式:

y=lsim(sys,f,t)

式中,t表示计算系统响应的抽样点向量,f是系统输入信号向量,sys是LTI系统模型,用来表示微分方程、差分方程或状态方程。其调用格式:

sys=tf(b,a)

式中,b和a分别是微分方程的右端和左端系数向量。例如,对于以下方程:

可用a = [a_3 ,a_2 ,a_1 ,a_0 ];b = [b_3 ,b_2 ,b_1 ,b_0 ]; sys = tf(b,a) 获得其LTI模型。注意,如果微分方程的左端或右端表达式中有缺项,则其向量a或b中的对应元素应为零,不能省略不写,否则出错。

【例2-23】有一物理学系统,用微分方程描述为 y^{''} (t) + 2y^' (t) + 100y(t) = 10sin 2pi t ,求系统的零状态响应。运行程序如下:

clear
ts=0;te=5;dt=0.01;
sys=tf([1],[1 2 100]);
t=ts:dt:te;
f=10*sin(2*pi*t);
y=lsim(sys,f,t);
plot(t,y);
xlabel('t(s)');ylabel('y(t)');
title('零状态响应')
grid on;

运行结果如图2-23所示。

在MATLAB中,求解系统冲激响应可应用控制系统工具箱个提供的函数impulse,求解阶跃响应可利用函数step,其调用形式为:

y=impulse(sys,t)

y=step(sys,t)

式中,t表示计算系统响应的抽样点向量,sys是LTI系统模型。

【例2-24】计算下述系统在冲激、阶跃、斜坡、正弦激励下的零状态响应:

运行程序如下:

b=[-0.475 -0.248 -0.1189 -0.0564];a=[1 0.6363 0.9396 0.5123 0.0037];
sys=tf(b,a);
T=1000;
t=0:1/T:10;t1=-5:1/T:5;
f1=stepfun(t1,-1/T)-stepfun(t1,1/T);
f2=stepfun(t1,0);
f3=t;
f4=sin(t);
y1=lsim(sys,f1,t);
y2=lsim(sys,f2,t);
y3=lsim(sys,f3,t);
y4=lsim(sys,f4,t);
subplot(221);
plot(t,y1);
xlabel('t');ylabel('y1(t)');
title('冲激激励下的零状态响应');
grid on;axis([0 10 -1.2 1.2]);
subplot(222);
plot(t,y2);
xlabel('t');ylabel('y2(t)');
title('阶跃激励下的零状态响应');
grid on;axis([0 10 -1.2 1.2]);
subplot(223);
plot(t,y3);
xlabel('t');ylabel('y3(t)');
title('斜坡激励下的零状态响应');
grid on;axis([0 10 -5 0.5]);
subplot(224);
plot(t,y4);
xlabel('t');ylabel('y4(t)');
title('正弦激励下的零状态响应');
grid on;axis([0 10 -1.5 1.2]);

运行程序如图2-24所示。

2.4.3 连续时间系统符号求解
连续时间系统可以使用常系数微分方程来描述,其完全响应由零输入响应和零状态响应组成。MATLAB符号工具箱提供了dsolve函数,可以实现对常系数微分方程的符号求解,其调用格式为:

dsolve('eq1,eq2…','cond1,cond2,…','v')

其中,参数eq表示各个微分方程,它与MATLAB符号表达式的输入基本相同,微分和导数的输入是使用Dy,D2y,D3y来表示y的一价导数,二阶导数,三阶导数;参数cond表示初始条件或者起始条件;参数v表示自变量,默认是变量t。

通过使用dsolve函数可以求出系统微分方程的零输入响应和零状态响应,进而求出完全响应。

【例2-25】已知某线性时不变系统的动态方程为:y''(t) + 4y'(t) + 4y(t) = 2f'(t) + 3f(t), t>0系统的初始状态为y(0) = 0,y'(0) = 1, 求系统的零输入响应y x(t)。

运行程序如下:

eq=’D2y+4*Dy+4*y=0’;
cond=’y(0)=0,Dy(0)=1’;
yx=dsolve(eq,cond);
yx=simplify(yx);
ezplot(yx,[0,10]);
xlabel('t');ylabel('yx(t)');
title('系统的零输入响应');
grid on;

运行结果如图2-25所示。

2.4.4 连续时间系统卷积求解
信号的卷积运算有符号算法和数值算法,此处采用数值计算法,需调用MATLAB的conv函数近似计算信号的卷积积分。连续信号的卷积积分定义是:

上式表明,连续信号f 1(t)和f 2(t)的卷积,可用各自抽样后的离散时间序列的卷积再乘以抽样间隔Δ。抽样间隔Delta 越小,误差越小。

【例2-26】用数值计算法求f_1 (t) = u(t) - u(t - 2) 与f_2 (t) = e^{ - 3t} u(t) 的卷积积分。

运行程序如下:

dt=0.01; t=-1:dt:2.5;
f1=heaviside(t)-heaviside(t-2);
f2=exp(-3*t).*heaviside(t);
f=conv(f1,f2)*dt; n=length(f); tt=(0:n-1)*dt-2;
subplot(221);
plot(t,f1);
grid on;
axis([-1,2.5,-0.2,1.2]);
title('f1(t)');
xlabel('t'); ylabel('f1(t)');
subplot(222);
plot(t,f2);
grid on;
axis([-1,2.5,-0.2,1.2]);
title('f2(t)');
xlabel('t'); ylabel('f2(t)');
subplot(212);
plot(tt,f);
grid on;
title('f(t)=f1(t)*f2(t)');
xlabel('t'); ylabel('f3(t)');

运行结果如图2-26所示。

时间: 2024-10-05 18:26:21

《MATLAB信号处理超级学习手册》——2.4 连续时间系统的时域分析的相关文章

《MATLAB信号处理超级学习手册》——2.2 信号的产生

2.2 信号的产生 MATLAB信号处理超级学习手册 本节将使用MATLAB产生基本信号.绘制信号波形.实现信号的基本运算,为信号分析和系统设计奠定基础. MATLAB提供了许多函数用于产生常用的基本信号,如阶跃信号.脉冲信号.指数信号.正弦信号和周期矩形波信号等,这些基本信号是信号处理的基础. 2.2.1 方波函数 square的调用函数如下所示. x=square(t):类似于sin(t),产生周期为2*pi,幅值为1的方波. x=square(t,duty):产生制定周期的矩形波,其中du

《MATLAB信号处理超级学习手册》——2.6 离散时间系统

2.6 离散时间系统 MATLAB信号处理超级学习手册 离散时间系统还可分成线性和非线性两种.同时具有叠加性和齐次性(均匀性)的系统,通常称为线性离散系统.当若干个输入信号同时作用于系统时,总的输出信号等于各个输入信号单独作用时所产生的输出信号之和,这个性质称为叠加性.齐次性是指当输入信号乘以某常数时,输出信号也相应地乘以同一常数. 不能同时满足叠加性和齐次性的系统称为非线性离散系统.如果离散系统中乘法器的系数不随时间变化,这种系统便称为时不变离散系统:否则就称为时变离散系统. 2.6.1 离散

《MATLAB信号处理超级学习手册》——第2章 时间信号与系统 2.1 离散序列

第2章 时间信号与系统 一个离散时间信号是一个整数值变量n的函数,表示为x(n)或{x(n)}.尽管独立变量n不一定表示"时间"(例如,n可以表示温度或距离),但x(n)一般被认为是时间的函数.因为离散时间信号x(n)对于非整数值n是没有定义的. 离散时间信号的波形绘制在MATLAB中一般用stem函数.stem函数的基本用法和plot函数一样,它绘制的波形图的每个样本点上有一个小圆圈,默认是空心的.如果需要实心,需使用参数"fill"."filled&q

《MATLAB信号处理超级学习手册》——2.7 本章小结

2.7 本章小结 MATLAB信号处理超级学习手册 时间信号和系统的理论是数字信号处理的理论基础.本章首先简单介绍了信号中的7种离散序列.然后通过方波函数等10种MATLAB函数举例介绍了信号的产生,并对信号的变换.运算.奇偶分解.微积分等MATLAB运算做了说明.最后,通过介绍连续时间系统分析和离散时间信号运算.离散时间系统的描述,为学习信号处理建立了必要的理论基础.

《MATLAB信号处理超级学习手册》——1.4 本章小结

1.4 本章小结 MATLAB信号处理超级学习手册MATLAB 语言由于语法的简洁性.代码接近自然数学描述方式以及具有丰富的专业函数库等诸多优点,吸引了众多科学研究工作者,越来越成为科学研究.数值计算.建模仿真以及学术交流的事实标准. 本章主要介绍了MATLAB语言的8个特点,并举例说明了MATLAB语言的简洁.方便.然后从MATLAB用户界面.变量及赋值.绘图命令.MATLAB程序的结构流等四个方面说明MATLAB的基本操作.最后对于MATLAB中的重要内容M文件进行了简单介绍.

《MATLAB信号处理超级学习手册》——1.3 M文件

1.3 M文件 MATLAB信号处理超级学习手册创建M文件是MATLAB中的非常重要的内容.事实上,正是由于在MATLAB工具箱中存放着大量的M文件,使得MATLAB在应用起来显得简单.方便,且功能强大. 如果用户根据自己的需要,开发出适用于自己的M文件,不仅能使MATLAB更加贴近用户,而且能使MATLAB的功能得到扩展. M文件有两种形式:命令文件和函数文件.当用户要运行的命令较多时,如果直接在命令窗口中逐条输入和运行,有诸多不便.此时可通过编写命令文件来解决这个问题.另外,从前面的例中可以

《MATLAB信号处理超级学习手册》——1.2 MATLAB基本操作

1.2 MATLAB基本操作 MATLAB信号处理超级学习手册本节主要介绍MATLAB一些入门知识,包括MATLAB桌面和窗口,MATLAB命令格式.数据格式.数据文件和变量管理,MATLAB的变量,MATLAB的程序设计方法,MATLAB作图方法,在线帮助的使用和程序文件.目录的管理等. 1.2.1 MATLAB用户界面启动MATLAB,单击MATLAB图标,进入到用户界面,如图1-1所示. 进入到MATLAB命令窗(MATLAB Command Window),在命令窗内,可以输入命令.编程

《MATLAB信号处理超级学习手册》——2.3 信号在MATLAB中的运算

2.3 信号在MATLAB中的运算 MATLAB信号处理超级学习手册本节利用MATLAB进行离散时间序列的基本运算,掌握基本的MATLAB函数的编写和调试方法,同时了解对连续时间信号的时域运算,加深对信号的时域运算的理解. 2.3.1 信号的时移.反折和尺度变换描离散序列的时域运算包括信号的相加.相乘,信号的时域变换包括信号的移位.反折.尺度变换等.在MATLAB中,离散序列的相加.相乘等运算是两个向量之间的运算,因此参加运算的两个序列向量必须具有相同的维数,否则应进行相应的处理. 离散序列的时

《MATLAB信号处理超级学习手册》——2.5 离散时间信号中的运算

2.5 离散时间信号中的运算 MATLAB信号处理超级学习手册2.5.1 离散时间系统响应离散时间LTI系统可用线性常系数差分方程来描述,即: 其中,a i(i=0,1,-,N)和b j(j=0,1,-,M)为实常数 MATLAB中函数filter可对式(2-24)的差分方程在指定时间范围内的输入序列所产生的响应进行求解.函数filter的语句格式为 y=filter(b,a,x) 其中,x为输入的离散序列:y为输出的离散序列,y的长度与x的长度一样:b与a分别为差分方程右端与左端的系数向量.