由系统阶跃响应辨识传递函数的Matlab实现方法

合集下载

利用matlab由开环传递函数求闭环传递函数并求其单位冲击和阶跃响应.docx

利用matlab由开环传递函数求闭环传递函数并求其单位冲击和阶跃响应.docx

利用matlab 由开环传递函数求闭环传递函数并求其单位冲击和阶跃响应并绘制输出阶跃响应曲线和脉冲响应曲线 解:编程(见:\work\CT_tch\resp_2_20110522)clear all;close all;%%%%%%%%%%%%%%a0 = [00000.8];bl = [10];b2 = [0.3 1 ];b3 = [0.5 0.7 1];bO = conv(bl,conv(b2,b3)); % bO:开环传递函数分母多项式系数 %%%%闭环传递函数aa = a0;% aa :闭环传递函数分了多项式系数 bb = bO + aO; % bb :闭环传递函数分了多项式系数 disp ('System Closed Loop Transfer Function is :*)aabb%%%%计算:阶跃响应t = 0:0.1 :20y = step (aa, bb, t);% 阶跃响应%%%%绘制:阶跃响应figure(l)plot(t ,y);title 。

阶跃响应); xlabelC时间 /s');ylabel(1S 值);grid ; %%%%计算:figure(2)yy = impulse (aa, bb, t);% 标题:脉冲响应plot(t, yy); titlcC 脉冲响应); xlabelC 时间/s); ylabel(1S 值);grid; %网格%%%%绘制:脉冲响应wt = logspace (-1,1); % 对数空间「0.1, 10)例:设有一个系统的开环传递函数如下函数, 01 %aO:开环传递函数分子多项式系数 % s % % (0.5 s2 + 0.7s+ 1) %标题:阶跃响应 %横坐标 %纵坐标 % io,!! 脉冲响应[mag,phase] = bode (a0 ,b0 ,wt); % 计算:Bode111的幅值和相位[Gm,Pm,Wcg,Wcm] = margin(aO,bO); % 计算:稳定裕度disp ('System Gain Margin and its associated frequency areGm %模值稳定裕度Wcg %幅值穿越频率,剪切频率,1/sdisp ('System Phase Margin and its associated frequency are : Pm %相位稳定裕度Wcm % ■兀相位穿越频率,1/s%%%%绘制:Bode图figure(3)Subplot (211); %对数幅值■频率图amp = 20*logl0(mag); % 20*log(mag), dBsemilogx(wt,amp);title C对数幅值■频率图);xlabel C频率 / rad*); ylabel f 幅值 / dB);grid;subplot (212); %相位-频率图semilogx(wt,phase);title C相位-频率图);xlabel ('频率/ rad*); ylabel('相位/ degree*);grid;运行该程序可得系统的单位阶跃和脉冲响应曲线如下,W 15图1系统的单位阶跃响应曲线系统的Bode图如F,图2 系统的脉冲响应曲线系统怕篦图幅频系统伯律图相麹:-300•■»、1—10图3 系统的Bode图。

matlab闭环传递函数阶跃响应曲线

matlab闭环传递函数阶跃响应曲线

一、概述Matlab是一款功能强大的科学计算软件,广泛应用于工程、数学和科学领域。

在控制系统工程中,闭环传递函数是一项重要的概念,它描述了控制系统中输入和输出之间的关系。

而阶跃响应曲线则是闭环传递函数的一种重要性能指标,能够帮助工程师评估控制系统的稳定性和性能。

本文将通过Matlab来分析闭环传递函数的阶跃响应曲线,以期对控制系统工程师有所启发和帮助。

二、闭环传递函数闭环传递函数描述了一个控制系统的输入和输出之间的关系。

在Matlab中,可以使用tf函数来创建闭环传递函数,例如:G = tf([1],[1, 2, 1]);这个例子中,创建了一个一阶系统的传递函数,分子多项式为1,分母多项式为1s^2+2s+1。

通过显示传递函数的输出,可以使用命令: disp(G);这样就可以得到闭环传递函数的具体形式。

三、阶跃响应曲线阶跃响应曲线是控制系统的一个重要性能指标,它描述了当输入信号为一个阶跃函数时,系统的输出是如何随时间变化的。

在Matlab 中,可以使用step函数来绘制阶跃响应曲线,例如:step(G);这样就可以得到闭环传递函数的阶跃响应曲线。

四、示例分析为了更好地理解闭环传递函数的阶跃响应曲线,在这里我们通过一个具体的示例来进行分析。

假设有一个二阶系统的闭环传递函数为: G = tf([1],[1, 2, 1]);则可以使用step函数来绘制其阶跃响应曲线:step(G);绘制出的曲线将显示系统的阶跃响应性能,包括上升时间、调节时间、峰值值和稳定状态误差等指标,通过这些指标可以评估出系统的稳定性和性能。

五、结论通过Matlab分析闭环传递函数的阶跃响应曲线是控制系统工程中的重要内容,它能够帮助工程师更好地理解控制系统的性能,并且为系统的设计和优化提供了重要依据。

在实际工程中,掌握Matlab对闭环传递函数的分析方法,将有助于工程师更好地完成控制系统的设计和调试工作,为现代工程技术的发展做出更大的贡献。

用MATLAB进行控制系统的动态性能的分析

用MATLAB进行控制系统的动态性能的分析

用MATLAB进行控制系统的动态性能的分析MATLAB是一款功能强大的工具,可用于控制系统的动态性能分析。

本文将介绍使用MATLAB进行动态性能分析的常用方法和技巧,并提供实例来说明如何使用MATLAB来评估和改进控制系统的性能。

控制系统的动态性能是指系统对输入信号的响应速度、稳定性和精度。

评估控制系统的动态性能往往需要分析系统的阶跃响应、频率响应和稳态误差等指标。

一、阶跃响应分析在MATLAB中,可以使用step函数来绘制控制系统的阶跃响应曲线。

假设我们有一个系统的传递函数为:G(s)=(s+1)/(s^2+s+1)要绘制阶跃响应曲线,可以按照以下步骤操作:1.自动生成传递函数:num = [1 1];den = [1 1 1];G = tf(num,den);2.绘制阶跃响应曲线:step(G);二、频率响应分析频率响应分析用于研究控制系统对不同频率输入信号的响应特性。

在MATLAB中,可以使用bode函数来绘制控制系统的频率响应曲线。

假设我们有一个传递函数为:G(s)=1/(s+1)要绘制频率响应曲线,可以按照以下步骤操作:1.自动生成传递函数:num = [1];den = [1 1];G = tf(num,den);2.绘制频率响应曲线:bode(G);运行以上代码,MATLAB将生成一个包含系统幅频特性和相频特性的图形窗口。

通过观察频率响应曲线,可以评估系统的增益裕度(gain margin)和相位裕度(phase margin)等指标。

三、稳态误差分析稳态误差分析用于研究控制系统在稳态下对输入信号的误差。

在MATLAB中,可以使用step函数结合stepinfo函数来计算控制系统的稳态误差。

假设我们有一个传递函数为:G(s)=1/s要计算稳态误差,可以按照以下步骤操作:1.自动生成传递函数:num = [1];den = [1 0];G = tf(num,den);2.计算稳态误差:step(G);info = stepinfo(G);运行以上代码,MATLAB将生成一个阶跃响应曲线的图形窗口,并输出稳态误差等信息。

自动控制原理实验二阶系统的阶跃响应

自动控制原理实验二阶系统的阶跃响应

自动控制原理实验二阶系统的阶跃响应一、实验目的通过实验观察和分析阶跃响应曲线,了解二阶系统的动态特性,掌握用MATLAB仿真二阶系统阶跃响应曲线的绘制方法,提高对二阶系统动态性能指标的计算与分析能力。

二、实验原理1.二阶系统的传递函数形式为:G(s)=K/[(s+a)(s+b)]其中,K为系统增益,a、b为系统的两个特征根。

特征根的实部决定了系统的稳定性,实部小于零时系统稳定。

2.阶跃响应的拉氏变换表达式为:Y(s)=G(s)/s3.阶跃响应的逆拉氏变换表达式为:y(t)=L^-1{Y(s)}其中,L^-1表示拉氏逆变换。

三、实验内容1.搭建二阶系统,调整增益和特征根,使系统稳定,并记录实际的参数数值。

2.使用MATLAB绘制二阶系统的阶跃响应曲线,并与实际曲线进行对比分析。

四、实验步骤1.搭建二阶系统,调整增益和特征根,使系统稳定。

根据实验要求,选择适当的数字电路元件组合,如电容、电感、电阻等,在实际电路中搭建二阶系统。

2.连接模拟输入信号。

在搭建的二阶系统的输入端接入一个阶跃信号发生器。

3.连接模拟输出信号。

在搭建的二阶系统的输出端接入一个示波器,用于实时观察系统的输出信号。

4.调整增益和特征根。

通过适当调整二阶系统的增益和特征根,使系统达到稳定状态。

记录实际调整参数的数值。

5.使用MATLAB进行仿真绘制。

根据实际搭建的二阶系统参数,利用MATLAB软件进行仿真,绘制出二阶系统的阶跃响应曲线。

6.对比分析实际曲线与仿真曲线。

通过对比分析实际曲线与仿真曲线的差异,分析二阶系统的动态特性。

五、实验结果与分析1.实际曲线的绘制结果。

根据实际参数的输入,记录实际曲线的绘制结果,并描述其特点。

2.仿真曲线的绘制结果。

利用MATLAB软件进行仿真,绘制出仿真曲线,并与实际曲线进行对比分析。

3.实际曲线与仿真曲线的对比分析。

通过对比实际曲线与仿真曲线的差异,分析二阶系统的动态特性,并讨论影响因素。

六、实验讨论与结论1.实验过程中遇到的问题。

matlab计算传递函数

matlab计算传递函数

matlab计算传递函数传递函数是用来描述线性时不变系统输入信号和输出信号之间关系的数学模型。

在MATLAB中,可以通过使用Transfer Function Toolbo某和Control System Toolbo某来计算传递函数。

首先,使用Transfer Function Toolbo某来计算传递函数非常简单。

以下是一个简单的例子,计算一个一阶惯性系统的传递函数:```matlabs = tf('s'); % 定义传递函数变量snum = 1; % 定义传递函数的分子系数den = [1 1]; % 定义传递函数的分母系数G = num/den; % 构建传递函数对象```在这个例子中,我们首先定义了传递函数变量s。

然后我们指定了传递函数的分子和分母多项式系数,并使用这些系数构建传递函数对象G。

接下来,可以使用Control System Toolbo某中的函数来计算传递函数的频率响应、阶跃响应、脉冲响应等等。

以下是一些常用的函数:- `bode(`:计算传递函数的频率响应。

- `step(`:计算传递函数的阶跃响应。

- `impulse(`:计算传递函数的脉冲响应。

- `freqresp(`:计算传递函数在指定频率点的频率响应。

- `pzmap(`:绘制传递函数的零极点图。

例如,我们可以使用下面的代码绘制传递函数的频率响应曲线:```matlabbode(G);```这将绘制传递函数G的幅频曲线和相频曲线。

除了使用Transfer Function Toolbo某和Control System Toolbo 某外,还可以使用MATLAB的Symbolic Math Toolbo某计算和操作传递函数的符号表达式。

Symbolic Math Toolbo某提供了一组用于创建、操作和简化数学表达式的函数,可以进行符号级别上的计算。

总之,MATLAB提供了多种方法来计算传递函数,并进行各种系统分析和设计。

利用matlab由开环传递函数求闭环传递函数并求其单位冲击和阶跃响应.docx

利用matlab由开环传递函数求闭环传递函数并求其单位冲击和阶跃响应.docx

利用matlab 由开环传递函数求闭环传递函数并求其单位冲击和阶跃响应并绘制输出阶跃响应曲线和脉冲响应曲线 解:编程(见:\work\CT_tch\resp_2_20110522)clear all;close all;%%%%%%%%%%%%%%a0 = [00000.8];bl = [10];b2 = [0.3 1 ];b3 = [0.5 0.7 1];bO = conv(bl,conv(b2,b3)); % bO:开环传递函数分母多项式系数 %%%%闭环传递函数aa = a0;% aa :闭环传递函数分了多项式系数 bb = bO + aO; % bb :闭环传递函数分了多项式系数 disp ('System Closed Loop Transfer Function is :*)aabb%%%%计算:阶跃响应t = 0:0.1 :20y = step (aa, bb, t);% 阶跃响应%%%%绘制:阶跃响应figure(l)plot(t ,y);title 。

阶跃响应); xlabelC时间 /s');ylabel(1S 值);grid ; %%%%计算:figure(2)yy = impulse (aa, bb, t);% 标题:脉冲响应plot(t, yy); titlcC 脉冲响应); xlabelC 时间/s); ylabel(1S 值);grid; %网格%%%%绘制:脉冲响应wt = logspace (-1,1); % 对数空间「0.1, 10)例:设有一个系统的开环传递函数如下函数, 01 %aO:开环传递函数分子多项式系数 % s % % (0.5 s2 + 0.7s+ 1) %标题:阶跃响应 %横坐标 %纵坐标 % io,!! 脉冲响应[mag,phase] = bode (a0 ,b0 ,wt); % 计算:Bode111的幅值和相位[Gm,Pm,Wcg,Wcm] = margin(aO,bO); % 计算:稳定裕度disp ('System Gain Margin and its associated frequency areGm %模值稳定裕度Wcg %幅值穿越频率,剪切频率,1/sdisp ('System Phase Margin and its associated frequency are : Pm %相位稳定裕度Wcm % ■兀相位穿越频率,1/s%%%%绘制:Bode图figure(3)Subplot (211); %对数幅值■频率图amp = 20*logl0(mag); % 20*log(mag), dBsemilogx(wt,amp);title C对数幅值■频率图);xlabel C频率 / rad*); ylabel f 幅值 / dB);grid;subplot (212); %相位-频率图semilogx(wt,phase);title C相位-频率图);xlabel ('频率/ rad*); ylabel('相位/ degree*);grid;运行该程序可得系统的单位阶跃和脉冲响应曲线如下,W 15图1系统的单位阶跃响应曲线系统的Bode图如F,图2 系统的脉冲响应曲线系统怕篦图幅频系统伯律图相麹:-300•■»、1—10图3 系统的Bode图。

使用 matlab 语句表达微分环节的传递函数

使用 matlab 语句表达微分环节的传递函数

使用 Matlab 语句表达微分环节的传递函数1. 介绍微分环节的传递函数在控制系统中,微分环节是一种常见的控制元件,其传递函数通常用来描述输入信号经过微分环节后的输出信号与输入信号之间的关系。

微分环节的传递函数通常具有形式为G(s)=Ks的特点,其中K为增益,s为复变量。

微分环节在控制系统中具有重要的作用,常用于提高系统的动态性能和抑制振荡。

2. 使用 Matlab 表达微分环节传递函数的基本语法在Matlab 中,可以使用一些简单的语句来表达微分环节的传递函数。

要表示一个简单的微分环节传递函数G(s)=Ks,可以使用以下语法:```matlabK = 1; 定义增益值s = tf('s'); 定义复变量 sG = K*s; 表示传递函数```在这个语法中,首先定义了微分环节的增益K,然后使用tf函数定义了复变量s,最后将传递函数G(s)表示为K*s。

3. 使用 Matlab 表达一般形式的微分环节传递函数除了简单的Ks形式外,微分环节的传递函数还可以具有一般形式G(s)=K(s-a),其中a为常数。

在 Matlab 中,可以使用以下语句表达微分环节传递函数的一般形式:```matlabK = 2; 定义增益值a = 3; 定义常数as = tf('s'); 定义复变量 sG = K*(s-a); 表示传递函数```在这个语法中,除了定义增益K和常数a外,其余部分与简单形式的传递函数表达相似。

4. 使用 Matlab 表达多个微分环节的传递函数在实际控制系统中,经常会遇到多个微分环节组成的复杂系统。

在Matlab 中,可以使用一些复杂的语句来表达多个微分环节的传递函数。

一个由两个微分环节组成的传递函数G(s)=Ks^2可以使用以下语句表示:```matlabK = 4; 定义增益值s = tf('s'); 定义复变量 sG = K*s^2; 表示传递函数```在这个语法中,使用s^2表示两个微分环节的乘积。

MATLAB下二阶系统的单位阶跃响应

MATLAB下二阶系统的单位阶跃响应

MATLAB下二阶系统的单位阶跃响应二阶系统在不同参数下对单位阶跃信号的响应一、二阶系统所谓二阶系统就是其输入信号、输出信号的关系可用二阶微分方程来表征的系统。

比如常见的RLC 电路(图a )、单自由度振动系统等。

图a 图b二阶系统传递函数的标准形式为222()2n n n H s s s ωξωω=++二、二阶系统的Bode 图(n ω=1)MATLAB 程序为>> clear>> num=[1];>> den=[1 0.2 1];>> bode(num,den);grid onhold onden=[1 0.4 1];bode(num,den);>> den=[1 0.6 1];>> bode(num,den);>> den=[1 0.8 1];>> bode(num,den);>> den=[1 1.4 1];>> bode(num,den);>> den=[1 2 1];>> bode(num,den);>> legend('0.1','0.2','0.3','0.4','0.7','1.0') 运行结果为三、二阶系统对单位阶跃信号的响应(=1)n MATLAB程序为>> clear>> num=[1];>> den=[1 0 1];>> t=0:0.01:25;>> step(num,den,t)>> grid on>> hold on>> den=[1 0.2 1];>> step(num,den,t)>> den=[1 0.4 1];>> step(num,den,t)>> den=[1 0.6 1];>> step(num,den,t)>> den=[1 0.8 1];>> step(num,den,t)>> den=[1 1.0 1];>> step(num,den,t)>> den=[1 1.2 1];>> step(num,den,t)>> den=[1 1.4 1];>> step(num,den,t)>> den=[1 1.6 1];>> step(num,den,t)>> den=[1 1.8 1];>> step(num,den,t)>> den=[1 2.0 1];>> step(num,den,t)>>legend('0','0.1','0.2','0.3','0.4','0.5','0.6','0.7','0.8' ,'0.9','1.0',-1)执行结果为由上面2图可得结论:1、 =0(无阻尼)时,系统处于等幅振荡,超调量最大,为100%,并且系统发生不衰减的振荡,永远达不到稳态。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

由系统阶跃响应辨识传递函数的Matlab 实现方法
典型二阶系统传递函数为:
1
21
)(2
2++=Ts s T s G ξ
工业生产过程中,大多数系统的阶跃响应曲线是临界阻尼或过阻尼的,即ξ≥1。

只要求出T 和ξ就能确定系统的传递函数。

G(s)可以分解为:))((1
)(212ωω++=s s T s G
其中,
[]
[]
1
1
1
1
2221--=-+=ξξωξξωT
T
1ω、2ω都是实数且均大于零。

则有:
211
ωω=
T ,2
12
12ωωωωξ+= 传递函数进一步化为:)
)(()(212
1ωωωω++=s s s G
因此,辨识传递函数就转化为求解1ω、2ω。

当输入为单位阶跃函数时,对上式进行拉普拉斯反变换,得
系统时域下的单位阶跃响应为:
t t
e e
t y 21
2111
221)(ωωωωωωωω---+
--
=, 即 t
t
e
e
t y 21
2111
22
)(1ωωωωωωωω----
-=
-
令1ω=2ωk )1(>k
,得
t
k t e
k e k k t y 221
11)(1ωω-----=-
⎥⎦
⎤⎢⎣⎡--=---t k t e k e k k 2)1(2111ωω
对上式两边取以e 为底的对数得
[]⎥⎦⎤
⎢⎣⎡-+--=---t k e k t k k t y 2)1(211ln 1ln )(1ln ωω 当∞→t 时,⎥⎦

⎢⎣⎡---t k e k 2)1(11ln ω0→,则上式化简为 []t k k t y 21
ln )(1ln ω--=-,该式的形式满足直线方程
b at t y +=)(*
其中,)(*
t y =[])(1ln t y -,1
ln
,2-=-=k k
b a ω)1(>k 通过最小二乘算法实现直线的拟合,得到a ,b 的值,即可得
到1ω、2ω的值,进而可得系统的传递函数。

Matlab 程序代码 %identification.m
clc
close all
t=[1 3 5 7 9 11 13 15 17 19];
y=[0.149086 0.5890067 0.830617 0.933990 0.973980 0.991095 0.995868 0.998680 0.999490 0.999850]; %实验数据,数据来源:《系统辨识方法及应用》.国防工业出版社 y2=log(1-y); plot(t,y2,'*'); grid on
pm=polyfit(t,y2,1) value=polyval(pm,t); hold on
plot(t,value,'r')
title('\fontname{黑体}\fontsize{20}y(t)=at+b') w2=-pm(1)
w1=w2/(1-exp(-pm(2))) T=1/sqrt(w1*w2)
theta=(w1+w2)/(2*sqrt(w1*w2)) z=[];
p=[-w1 -w2]; k=w1*w2; sys=zpk(z,p,k) figure(2)
step(sys,[0:0.5:20]); axis([0 20 0 1.2]) hold on plot(t,y,'r*')
运行结果:
系统的传递函数为
)
4797.0)(126.1(54034
.0)(++=
S S S G 阻尼比为0925.1=ξ
自然振荡周期为T=1.3604 s。

相关文档
最新文档