连续时间LTI系统的时域分析
- 格式:doc
- 大小:138.50 KB
- 文档页数:8
MATLAB与信号实验——连续LTI系统的时域分析连续LTI系统的时域分析是信号与系统学中的重要课题。
MATLAB作为一种强大的科学计算软件,提供了丰富的工具和函数来进行信号与系统的分析。
下面将介绍MATLAB在连续LTI系统时域分析中的应用。
首先,我们需要了解连续LTI系统的基本概念。
一个连续域线性时不变系统(LTI系统)可以由它的冲激响应完全描述。
冲激响应是系统对单位冲激信号的响应。
在MATLAB中,可以使用impulse函数来生成单位冲激信号。
假设我们有一个连续LTI系统的冲激响应h(t),我们可以使用conv 函数来计算系统对任意输入信号x(t)的响应y(t)。
conv函数实现了卷积运算,可以将输入信号与冲激响应进行卷积运算得到输出信号。
例如,我们假设一个连续LTI系统的冲激响应为h(t) = exp(-t)u(t),其中u(t)是单位阶跃函数。
我们可以使用以下代码生成输入信号x(t)和计算输出信号y(t):```matlabt=-10:0.1:10;%时间范围x = sin(t); % 输入信号h = exp(-t).*heaviside(t); % 冲激响应y = conv(x, h, 'same'); % 计算输出信号```这段代码首先定义了时间范围t,然后定义了输入信号x(t)和冲激响应h(t)。
接下来,使用conv函数计算输入信号和冲激响应的卷积,设置参数’same’表示输出信号与输入信号长度相同。
最后,得到了输出信号y(t)。
在得到输出信号后,我们可以使用MATLAB的绘图功能来可视化结果。
例如,使用以下代码可以绘制输入信号和输出信号的图像:```matlabfigure;plot(t, x, 'b', 'LineWidth', 2); % 绘制输入信号hold on;plot(t, y, 'r', 'LineWidth', 2); % 绘制输出信号xlabel('时间');ylabel('幅度');legend('输入信号', '输出信号');```除了卷积运算外,MATLAB还提供了许多其他函数来进行连续LTI系统的时域分析。
实验三连续时间LTI系统的时域分析实验报告一、实验目的通过实验三的设计和实现,达到如下目的:1、了解连续时间LTI(线性时不变)系统的性质和概念;2、在时域内对连续时间LTI系统进行分析和研究;3、通过实验的设计和实现,了解连续时间LTI系统的传递函数、共轭-对称性质、单位冲激响应等重要性质。
二、实验原理在常见的线性连续时间系统中,我们知道采用差分方程的形式可以很好地表示出该系统的性质和特点。
但是,在本实验中,我们可以采用微分方程的形式来进行相关的研究。
设系统的输入为 x(t),输出为 y(t),系统的微分方程为:其中,a0、a1、…、an、b0、b1、…、bm为系统的系数,diff^n(x(t))和diff^m(y(t))分别是输入信号和输出信号对时间t的n阶和m阶导数,也可以记为x^(n)(t)和y^(m)(t)。
系统的单位冲激响应函数 h(t)=dy/dx| x(t)=δ(t),则有:其中,h^(i)(t)表示h(t)的第i阶导数定义系统的传递函数为:H(s)=Y(s)/X(s)在时域内,系统的输出y(t)可以表示为:其中,Laplace^-1[·]函数表示Laplace逆变换,即进行s域到t域的转化。
三、实验步骤1、在Simulink中,构建连续时间LTI系统模型,其中系统的微分方程为:y(t)=0.1*x(t)-y(t)+10*dx/dt2、对系统进行单位冲激响应测试,绘制出系统的单位冲激响应函数h(t);4、在S函数中实现系统单位冲激响应函数h(t)的微分方程,并使用ODE45框图绘制出系统单位冲激响应函数h(t)在t=0~10s之间的图像;6、利用数据记录栏,记录系统在不同的参数下的变化曲线、阶跃响应函数u(t)和单位冲激响应函数h(t)的变化规律。
四、实验数据分析1、单位冲激响应测试那么,当输入信号为单位冲激函数δ(t)时,根据系统的微分方程,可以得知输出信号的形式为:即单位冲激响应函数h(t)为一个包含了单位冲激函数δ(t)在内的导数项序列。
MATLAB与信号实验-——-连续LTI系统的时域分析在信号处理中,MATLAB是一个强大的工具,它提供了许多功能,使我们能够模拟和分析各种信号系统。
对于连续LTI系统,时域分析是一个重要的方法,它允许我们直接观察系统的输入和输出信号之间的关系。
下面是一个关于连续LTI系统的时域分析的实验。
一、实验目的本实验的目的是验证连续LTI系统的时域响应,通过使用MATLAB模拟系统,我们可以观察到不同的输入信号产生的输出信号,从而了解系统的特性。
二、实验步骤1.定义系统:首先,我们需要定义我们的连续LTI系统。
这可以通过使用MATLAB中的lti函数来完成。
我们需要提供系统的传递函数,它描述了系统的输入和输出之间的关系。
2.设置输入信号:为了观察系统的行为,我们需要设置一个合适的输入信号。
在MATLAB中,我们可以使用square函数来生成一个方波信号,该信号具有固定的频率和幅度。
3.模拟系统:使用MATLAB的lsim函数,我们可以模拟我们的连续LTI系统。
这个函数将输入信号和系统的传递函数作为参数,然后计算出系统的输出信号。
4.分析结果:我们可以使用MATLAB的图形功能来观察输入和输出信号。
这可以帮助我们理解系统的行为,并验证我们的模型是否正确。
三、实验结果与分析在实验中,我们使用了不同的输入信号(如方波、正弦波等)来测试我们的连续LTI系统。
对于每种输入信号,我们都观察了系统的输出信号,并记录了结果。
通过对比不同的输入和输出信号,我们可以得出以下结论:1.对于方波输入,系统的输出信号是带有延迟的方波,这表明系统对突变信号的响应是瞬时的。
2.对于正弦波输入,系统的输出信号是与输入信号同频同相位的正弦波,这表明系统对正弦波的响应是具有稳定性的。
这些结果验证了连续LTI系统的基本特性:即对于单位阶跃函数(突变信号)的输入,系统的响应是瞬时的;而对于周期性输入(如正弦波),系统的响应具有稳定性。
这些结果与我们在理论上学到的知识相符,从而验证了我们的模型是正确的。
一、课程设计题目:基于 MATLAB 的连续时间LTI 系统的时域分析二、基本要求:① 掌握连续时不变信号处理的基本概念、基本理论和基本方法; ② 学会 MATLAB 的使用,掌握 MATLAB 的程序设计方法; ③ 学会用 MATLAB 对信号进行分析和处理;④ 编程实现卷积积分或卷积和,零输入响应,零状态响应; ⑤ 撰写课程设计论文,用信号处理基本理论分析结果。
三、设计方法与步骤:一般的连续时间系统分析有以下几个步骤: ①求解系统的零输入响应; ②求解系统的零状态响应; ③求解系统的全响应; ④分析系统的卷积;⑤画出它们的图形. 下面以具体的微分方程为例说明利用MATLAB 软件分析系统的具体方法.1.连续时间系统的零输入响应描述n 阶线性时不变(LTI )连续系统的微分方程为:已知y 及各阶导数的初始值为y(0),y (1)(0),… y (n-1)(0), 求系统的零输入响应。
建模当LIT 系统的输入为零时,其零输入响应为微分方程的其次解(即令微分方程的等号右端为零),其形式为(设特征根均为单根)其中p 1,p 2,…,p n 是特征方程a 1λn +a 2λn-1+…+a n λ+a n =0的根,它们可以用root(a)语句求得。
各系数 由y 及其各阶导数的初始值来确定。
对此有………………………………………………………………………………………写成矩阵形式为: P 1n-1C 1+ P 2n-1C 2+…+ P n n-1C n =D n-1y 01121111n n m n n m m n n m d y d y dy d u du a a a a y b b b u dtdt dt dt dt -++-++⋅⋅⋅⋅⋅++=+⋅⋅⋅⋅++1212()n p t p t p t n y t C e C e C e =++⋅⋅⋅⋅+120n C C C y ++⋅⋅⋅⋅+=11220n n p C p C p C Dy ++⋅⋅⋅⋅+=111111220n n n n n n p C p C p C D y----++⋅⋅⋅⋅+=1012201111120111n n n n n n n C y p p p C Dy p p p C D y ----⋅⋅⋅⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⋅⋅⋅⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⋅⋅⋅⎣⎦⎣⎦⎣⎦即 V •C=Y 0 其解为:C=V\Y 0 式中V 为范德蒙矩阵,在matlab 的特殊矩阵库中有vander 。
以下面式子为例:y(0_)=1,y(0_)=5;MATLAB 程序:a=input('输入分母系数a=[a1,a2,...]=');n=length(a)-1;Y0=input('输入初始条件向量 Y0=[y0,Dy0,D2y0,...]='); p=roots(a);V=rot90(vander(p));c=V\Y0'; dt=input('dt=');te=input('te='); t=0:dt:te;y=zeros(1,length(t)); for k=1:n y=y+c(k)*exp(p(k)*t);end plot(t,y);gridxlabel('t') ;ylabel('y'); title('零输入响应');程序运行结果:用这个通用程序来解一个三阶系统,运行此程序并输入 a=[1,5,4] Y0=[1,5] dt=0.01 te=6结果如下图:根据图可以分析零输入响应,它的起始值与输入函数无关,只与它的初始状态值有关,其起始值等于y(0_)的值。
随着时间的推移,最后零输入响应的值无限的趋近于0。
1211112111n n n n n p p p V p p p ---⋅⋅⋅⎡⎤⎢⎥⋅⋅⋅⎢⎥=⎢⎥⎢⎥⋅⋅⋅⎣⎦[]12n C C C C =⋅⋅⋅1000n C y Dy D y -⎡⎤=⋅⋅⋅⎣⎦''''()5()4()2()4()y t y t y t f t f t ++=-ty零输入响应2.卷积的计算连续时间信号1()f t 和2()f t 的卷积运算可用信号的分段求和来实现,即:1212120()()*()()()lim()()k f t f t f t f t f t d f k f t k ττ∞∞-∞∆→=-∞==-=∆-∆⋅∆∑⎰如果只求当t = n ∆(n 为整数)时f (t )的值f (n ∆) ,则上式可得:1212()()()()[()]k k f n f k f t k f k f n k ∞∞=-∞=-∞∆=∆-∆⋅∆=∆∆-∆∑∑式中的12()[()]k f k f n k ∞=-∞∆∆-∆∑实际上就是连续时间信号1()f t 和2()f t 经等时间间隔 均匀抽样的离散序列1()f k ∆和2()f k ∆的卷积和。
当∆足够小时,()f n ∆就是卷积积分的结果——连续时间信号f (t )的较好数值近似。
建模下面是利用MATLAB 实现连续信号卷积的通用程序conv(),该程序在计算出卷积积分的数值近似的同时,还绘制出f (t )的时域波形图。
应注意,程序中是如何设定f (t )的时间长度。
MATLAB 程序:f1=input('输入函数f1='); f2=input('输入函数f2='); dt=input('dt='); y=conv(f1,f2);plot(dt*([1:length(y)]-1),y);grid on; title('卷积');xlabel('t'); ylabel('f1*f2')程序运行结果: 输入以下数据:f1=sin(3*t) f2=cos(3*t+2) dt=0.01 得出图形如下:卷积tf 1*f 23.连续时间系统零状态响应的数值计算我们知道,LTI 连续系统可用如下所示的线性常系数微分方程来描述,()()0()()NMi j i j i j a yt b f t ===∑∑例如,对于以下方程:''''''''''''32103210()()()()()()()()a y t a y t a y t a y tb f t b f t b f t b f t +++=+++可用32103210[,,,],[,,,],a a a a a b b b b b ==输入函数()u f t =,得出它的冲击响应h ,再根据LTI 系统的零状态响应y (t )是激励u (t )与冲击响应h (t )的卷积积分。
注意,如果微分方程的左端或右端表达式中有缺项,则其向量a 或b 中的对应元素应为零,不能省略不写,否则出错。
求函数的零状态响应及初始状态'(0)(0)0zs zs y y --==。
输入函数()sin(3*)cos(2*)f t t t =+。
建模先求出系统的冲击响应,写出其特征方程2540λλ++=求出其特征根为p 和p ,及相应的留数r ,r ;则冲击响应为''''()5()4()2()4()y t y t y t f t f t ++=-1212()p t p th t r e r e =+ 输入y (t )可用输入u (t )与冲击响应h (t )的卷积求得。
MATLAB 程序:a=input('输入分母系数a=[a1,a2,...]='); b=input('输入输入信号系数b=[b1,b2,...]='); dt=input('dt=');te=input('te='); t=0:dt:te;u=input('输入函数u='); te=t(end);dt=te/(length(t)-1); [r,p,k]=residue(b,a);h=r(1)*exp(p(1)*t)+r(2)*exp(p(1)*t); subplot(2,1,1),plot(t,h);grid title('冲击函数'); y=conv(u,h)*dt; subplot(2,1,2),plot(t,y(1:length(t)));grid title('零状态响应');程序运行结果执行这个程序,取a=[1,5,4] b=[2,4] dt=0.01 te=6sin(3*)cos(2*)u t t =+得出图形如下:由于初始状态为零,所以零状态的起始值也为零,即h (t )包含了连续系统的固有特性,与系统的输入无关。
只要知道了系统的冲激响应,即可求得系统在不同输入时产生的输出。
因此,求解系统的冲激响应h 对进行连续时间系统的分析具有非常重要的意义冲击函数零状态响应4.连续时间系统的全响应计算上面通过对LTI 系统函数的描述,我们可以得知:如果在系统的初始状态不为零,在激励f (t )的作用下,LTI 系统的响应称为全响应,它是零输入响应和零状态响应之和,即()()()zi zs y t y t y t =+故可先求出零输入响应和零状态响应,再把两者相加,得到全响应。
但简单的相加可能由于零输入与零状态的矩阵不同而不能的出正确的结果,这就需要对矩阵进行截取,使它们的阶数相同。
例如,对于以下方程:初始值为:y(0_)=1,y(0_)=5; 输入函数为:()sin(3*)cos(2*)f t t t =+求它的全响应。
建模先根据零输入响应的求法,得出零输入响应y1(t )。
再根据零状态响应的求法,得出零状态响应y2(t )。
最后,全响应y 等于零输入响应y1(t )加上零状态响应y2(t ),得出全响应。
MATLAB 程序:a=input('输入分母系数a=[a1,a2,...]='); n=length(a)-1;Y0=input('输入初始条件向量 Y0=[y0,Dy0,D2y0,...]='); b=input('输入输入信号系数b=[b1,b2,...]='); u=input('输入函数u=');dt=input('dt=');te=input('te='); t=0:dt:te;p=roots(a);V=rot90(vander(p));c=V\Y0'; y1=zeros(1,length(t));for k=1:n y1=y1+c(k)*exp(p(k)*t);end te=t(end);dt=te/(length(t)-1); [r,p,k]=residue(b,a);h=r(1)*exp(p(1)*t)+r(2)*exp(p(1)*t); y2=conv(u,h)*dt;y=y1(1:length(t))+y2(1:length(t)); figure(1);subplot(3,1,1),plot(t,y1),gridxlabel('t'); ylabel('y1');title('零输入响应'); subplot(3,1,2),plot(t,y2(1:length(t)));grid xlabel('t');ylabel('y2');title('零状态响应');''''()5()4()2()4()y t y t y t f t f t ++=-subplot(3,1,3),plot(t,y),gridxlabel('t'); ylabel('y');title('全响应响应');程序运行结果执行程序,取 a=[1,5,4] Y0=[1,5] b=[1,2,4] u=sin(3*t)+cos(2*t) dt=0.01 te=6结果如下图:在零输入响应中任一时刻取值y1,在零状态响应的对应时刻取值y2,再在全响应的对应时刻取值y 。