-
Matlab求解阶跃响应性能指标 (上升时间、调整时间、峰值时间、超调量)
2020-09-26 11:16:13(上升时间、调整时间、峰值峰值、超调量概述阶跃响应性能指标定义Matlab函数示例求一阶系统阶跃响应性能指标求复杂系统阶跃响应性能指标求解不同阻尼比时二阶系统的阶跃响应性能指标联系作者 (上升时间、调整时间、...概述
工科的同学对应阶跃响应应该不会陌生,简单来说,阶跃响应是指输入量发生阶跃变化时动态系统的输出阶跃响应,通过分析输出阶跃响应的性能指标,可以分析和比较动态系统的动态性能和稳态性能。
阶跃响应性能指标定义
阶跃响应性能指标主要包括稳态值、上升时间、峰值时间和超调量,定义如下:
稳态值ys:当时间趋近于无穷大时,阶跃响应的输出值,ys=y(∞)。
上升时间tr:输出阶跃响应达到90%稳态值时所对应的时刻。
峰值时间tm:输出阶跃响应峰值ym所对应的时刻。
超调量σ:输出阶跃响应峰值ym与稳态值ys之差所占稳态值ys的百分比, σ%= (ym-ys)/ys。
调整时间ts:输出阶跃响应进入稳态值ys±Δ误差带范围内所对应的时刻, 一般取Δ=0.02或Δ=0.05。
Matlab函数
按照阶跃响应性能指标的定义,作者使用Matlab开发了函数Fun_Step_Performance.m,使用数值算法求出各类阶跃响应的性能指标值,函数简单、易用、通用性好。
function [ys,tr,ts,tm,ov] = Fun_Step_Performance(t,y,drawflag) % [ys,tr,ts,ov] = Fun_Step_Performance(t,y) 标准阶跃响应的性能指标求解 % 本程序适用于标准阶跃响应曲线,末尾时间必须已经接近稳态值 % t-y 为阶跃响应的时间-输出配对序列,可由[y,t] = step(sys)求得 % drawflag为时候作图标志,不输入或输入非0值时,默认作图,输入0时不做图 % ys 稳态值 % tr 上升时间,默认为0-90%的上升时间 % ts 调整时间,默认为2%的调整时间 % tm 为峰值时间 % ov 超调量 % % e.g. % sys = tf(1,[1 2*0.5*1 1]); % [y,t] = step(sys,15); % [ys,tr,ts,tm,ov] = Fun_Step_Performance(t,y,1);
示例
求一阶系统阶跃响应性能指标
% Eg 1 一阶系统 sys = tf(1,[3 1]); [y,t] = step(sys,25); [ys,tr,ts,tm,ov] = Fun_Step_Performance(t,y);
%% 阶跃响应指标结果: 上升时间:7s 调整时间:11.5s 峰值时间:25s,超调量:0% 稳态值:1 %% 阶跃响应指标结果显示结束
求复杂系统阶跃响应性能指标
sys = tf(1,[1 2*0.20*1 1]) * tf(1,[2 1]) * tf([1.5 1],[1 2*0.25*3 9]); % 5阶系统 [y,t] = step(sys,35); [ys,tr,ts,tm,ov] = Fun_Step_Performance(t,y);
%% 阶跃响应指标结果: 上升时间:2.0877s 调整时间:17.3158s 峰值时间:3.5614s,超调量:40.1285% 稳态值:0.111 %% 阶跃响应指标结果显示结束
求解不同阻尼比时二阶系统的阶跃响应性能指标
% Eg 3 求解不同阻尼比时二阶系统的阶跃响应特性 wn = 1; % 固有频率 kes_vet = [0.2 0.4 0.6 0.8 1 1.2]; % 阻尼比序列 figure hold on for ii = 1:length(kes_vet) kes = kes_vet(ii); sys = tf(1,[1 2*kes*wn wn^2]); % 二阶系统传递函数 [y,t] = step(sys,50); % 阶跃响应 [ys(ii),tr(ii),ts(ii),tm(ii),ov(ii)] = Fun_Step_Performance(t,y,0); % 求解阶跃响应,不绘图 plot(t,y) Str{ii} = [ '\xi = ' num2str(kes)]; end legend(Str) xlabel('时间t/s') ylabel('输出响应y') figure subplot(221) plot( kes_vet,tr,'-o' ) xlabel('阻尼比\xi') ylabel('上升时间/s') subplot(222) plot( kes_vet,ts,'-o' ) xlabel('阻尼比\xi') ylabel('调整时间/s') subplot(223) plot( kes_vet,tm,'-o' ) xlabel('阻尼比\xi') ylabel('峰值时间/s') subplot(224) plot( kes_vet,ov,'-o' ) xlabel('阻尼比\xi') ylabel('超调量/%')
tr = 1.8349 2.0737 2.4540 2.9954 4.0000 4.9407 ts = 19.2661 8.2949 5.8282 3.6866 5.5000 7.9051 tm = 3.2110 3.4562 3.9877 5.1843 40.0000 50.0000 ov = 52.6622 25.3725 9.4610 1.5144 0 0
对于二阶系统,阻尼比的变化不影响输出稳态值,随着阻尼比增加,上升时间逐步增大、调整时间先减小再增大、峰值时间逐步变大、超调量逐步变小;当阻尼比在0.707左右时,上升时间和调整时间较快,且超调量很小,系统综合性能较好,工程上通常设计阻尼比在0.707左右,称之为最佳阻尼比。
联系作者
有Matlab/Simulink方面的技术问题,欢迎发送邮件至944077462@qq.com讨论。
更多Matlab/Simulink原创资料,欢迎关注微信公众号:Matlab Fans源程序下载:
1. csdn资源: Matlab求解阶跃响应指标
2. 扫码关注微信公众号Matlab Fans,回复BK06获取百度网盘下载链接。 -
Matlab求解阶跃响应指标(上升时间、调整时间、峰值峰值、超调量).rar
2021-03-13 23:12:39原创开发,使用Matlab求解阶跃响应指标(上升时间、调整时间、峰值峰值、超调量),内含自定义Matlab函数、丰富的演示实例和详细的说明文档,可以方便求取系统阶跃响应指标,简单易用。 -
用Matlab求二阶系统的峰值时间、上升时间、调整时间、超调量、
2019-11-14 23:34:56该层循环是计算上升时间即第一次达到稳态值的时间 if y ( k ) yss & y ( k + 1 ) >= yss % 第一次达到稳态值 tr = t ( k + 1 ) ; % 用tr存储稳态值 break end end for i = n : - 1 : 1 % 该层循环用于计算...以下是第二个传递函数的做法,若想求第一个或其他的传递函数的参数,只需要改变分子矩阵num和分母矩阵即可
num1=[0.01]; den1=[1,0.002,0.01]; t=0:0.001:10;%为了确保精度,即各个参数的小数的位数,减小步长 y=step(num1,den1,t); n=length(t); [ymax,ind]=max(y);%y是原系统的阶跃响应,是一个二维矩阵,返回本身曲线的最大值和对应的时间矩阵变量的第几位 yss=y(n);%我们这里就设我们时间的最终值对应的就是稳态值 mp=(ymax-yss)/yss;%由超调量定义可以计算超调量 for k=1:n%该层循环是计算上升时间即第一次达到稳态值的时间 if y(k)<=yss&y(k+1)>=yss%第一次达到稳态值 tr=t(k+1);%用tr存储稳态值 break end end for i=n:-1:1%该层循环用于计算调整时间,我们是从最终时间(无穷远的时间)往前开始遍历查找,否则从前开始查找的话会出错 if y(i)>=1.02*yss|y(i)<=0.98*yss%当得到的值与稳态值差的绝对值与稳态值之比为2%时说明到达了调整时间 ts=t(i);%ts存储调整时间 break end end disp('峰值时间为:') disp(t(ind)) disp('上升时间为:') disp(tr) disp('调整时间为:') disp(ts) disp('超调量为:') disp(mp)
-
Matlab 单位阶跃响应曲线三维图、上升时间、峰值时间、最大过调量和调整时间
2014-10-09 15:07:291.Matlab作单位阶跃响应曲线的三维图 定义闭环系统传递函数如下: H(s)=1/(s^2+2*zeta*s+1) %Matlab作单位阶跃响应曲线的三维图 %标准二阶系统响应曲线 wn=1 t=0:0.2:10; zeta=[0 0.2 0.4 0.8 1]; for n=...1.Matlab作单位阶跃响应曲线的三维图
定义闭环系统传递函数如下:
H(s)=1/(s^2+2*zeta*s+1)%Matlab作单位阶跃响应曲线的三维图 %标准二阶系统响应曲线 wn=1 t=0:0.2:10; zeta=[0 0.2 0.4 0.8 1]; for n=1:6 num=1; den=[1 2*zeta(n) 1]; [y(1:51,n),x,t]=step(num,den,t) ; end plot(t,y) mesh(t,zeta,y')
2.用Matlab求上升时间、峰值时间、最大过调量和调整时间
定义闭环系统传递函数如下:
H(s)=25/(s^2+6*s+25)%求上升时间、峰值时间、最大过调量和调整时间 %可以应用到高阶系统 num=[0 0 25]; den=[1 6 25]; t=0:0.005:5; [y,x,t]=step(num,den,t) ; r=1; while y(r)<1.0001;r=r+1;end; rise_time=(r-1)*0.005 [ymax,tp]=max(y); peak_time=(tp-1)*0.005 max_overshoot=ymax-1 s=1001;while y(s)>0.98&y(s)<1.02;s=s-1;end; settle_time=(s-1)*0.005
运行后结果:
rise_time = 0.5550
peak_time = 0.7850
max_overshoot = 0.0948
settle_time = 1.1850
求单位脉冲响应的两种方法(求斜坡响应也可用此方法)
在初始条件为零时,H(s)的单位脉冲响应也就是sH(s)的单位阶跃响应
H(s)=1/(s^2+0.2*s+1)
num=[1];
den=[1 0.2 1];
impulse(num,den)
或
num=[0 1 0];
den=[1 0.2 1];
step(num,den) -
用matlab的编程法和游动鼠标法求二阶传递函数的上升时间、峰值时间、超调量和调节时间 - Gavin_Hall的博客 ...
2019-04-30 12:43:54上升时间 tr:响应从峰值的10%上升到峰值的90%所需要的时间;而阶跃响应则是从终值的10%上升到终值的90%所需要的时间;对有振荡的系统,也可以定义为从0到第一次到达终值所需的时间。 峰值时间 tp:响应越过终值...1. 准备
终值:c(∞)
上升时间 tr:响应从峰值的10%上升到峰值的90%所需要的时间;而阶跃响应则是从终值的10%上升到终值的90%所需要的时间;对有振荡的系统,也可以定义为从0到第一次到达终值所需的时间。
峰值时间 tp:响应到达第一个峰值所需的时间。
调节时间 ts:响应到达并保持在终值的正负5%误差带内所需的最短时间;有时也用终值的正负2%。
超调量 σ%:峰值c(tp )超出终值的百分比,即:
题目:
已知二阶系统传递函数为
试分别用游动鼠标法和编程法求取系统的峰值,超调量,上升时间以及调节时间。2. 编程法:
s = tf('s'); % 用字母 s 构造传递函数 Gs = 3/(s^2+2*s+10); % 构造 Gs t = 0:0.005:5; % 设置横轴范围和步长 [y,x,t] = step(Gs,t); % 根据步长逐步响应传递函数 [ymax,tp] = max(y); % 获取最大值的点的数据 r=1; r1=0; while y(r) < (ymax*0.9) % 过滤小于90%的 if y(r) > (ymax*0.1) % 过滤大于10%的 r1=r1+1; end; r=r+1; end; rise_time = r1*0.005 % 上升时间 peak_time = (tp-1)*0.005 % 峰值时间 ystable = dcgain(Gs); % 稳态值 max_overshoot = (ymax-ystable)/ystable % 超调量 r2=1001; % 由 (5-0)/0.005+1 求得 while y(r2) > ystable*0.98 && y(r2) < ystable*1.02 % 从稳态倒推回去,求得首次达到并维持在稳态值正负2%的范围的值 r2 = r2 - 1; end settle_time = (r2-1)*0.005 % 调节时间
求得:
rise_time = 0.6100 peak_time = 1.0450 max_overshoot = 0.3509 settle_time = 3.5350
3. 游动鼠标法:
游动鼠标法不适合用于plot()命令画出的图形,只能在非plot()函数输出的曲线上求取。
1.获取必要数据s = tf('s'); Gs = 3/(s^2+2*s+10); % 构造 Gs t = 0:0.005:5; step(Gs,t) % 画出图像 [y,x,t] = step(Gs,t); [ymax,tp] = max(y); ymax % 峰值 ym10 = ymax * 0.1 % 峰值 10% ym90 = ymax * 0.9 % 峰值 90% ystable = dcgain(Gs) % 稳态值 ys98 = ystable * 0.98 % 稳态 -2% ys102 = ystable * 1.02 % 稳态 +2%
得到图像并求得:
ymax = 0.4053 ym10 = 0.0405 ym90 = 0.3647 ystable = 0.3000 ys98 = 0.2940 ys102 = 0.3060
2.点击工具栏中的数据游标,在图中分别标出纵坐标为 ymax = 0.4053,ym10 = 0.0405,ym90 = 0.3647,ys98 = 0.2940,ys102 = 0.3060 的五点:
3.收集图像中 Time 对应的 Amplitude 数据,并计算可得:
tr = 0.783 - 0.176 = 0.607
tp = 1.04
ts = 3.53 (因为0.295位于此波谷最低处,而0.295>0.294,故不取4.19)
σ% = (0.405 - 0.3)/0.3 × 100% = 35%下面是另外两个博客,和这个关系比较密切,关于 PID 算法解释的:
PID算法模型分析:基于温度控制
临界比例度法整定P、PI、PID控制器的参数的matlab算法实现>>> End <<<
-
MATLAB自动控制:分析系统动态特性(超调量,上升时间,峰值时间,调整时间)和静态特性(稳态误差)
2020-06-07 12:27:56OverShoot)) line([RiseTime, RiseTime], [0, ys], 'color', 'r') text(RiseTime, -ys*0.05, sprintf('上升时间%.2f',RiseTime)) line([AdjustTime, AdjustTime], [0,ys*(1 + gTolerance)], 'color', 'r') text... -
matlab开发-传递函数的时间响应参数不同
2019-08-26 07:37:44matlab开发-传递函数的时间响应参数不同。获取延迟时间、上升时间、峰值时间、最大超调量、稳态误差和稳定性的值 -
基于MATLAB进行长时间序列降水的MK趋势分析实验过程与结果xzx
2019-05-29 13:52:41基于MATLAB进行长时间序列数据的MK趋势检验,程序书写简易,且循环操作简单,结果以矩阵形式输出,极大的方便初学者的实验进行。本文实验数据为所有站点的1961-2018年时间序列的SPI3数据:SPI3hebing.xls。结果显示... -
(详细)MATLAB/SIMULINK 搭建具有死区时间的SPWM脉冲波
2021-03-10 19:23:57而任何固态的功率开关管都存在着一定的导通和关断时间,为确保同一桥臂上下开关管不致发生直通故障,通常采用将理想的SPWM驱动信号上升沿(或下降沿)延迟一段时间Td(称为死区时间)。死区是为保证开关器件安全、... -
Matlab合成心电波(ECG-Simulator-Matlab)
2018-06-09 18:03:41应用Maltab合成心电波,可以合成常规心电波信号,优化后的代码可以实现ST段抬高和压低,并且T波上升时间和下降时间可调; 原理--傅里叶级数 -
精密课设matlab代码
2021-01-09 09:39:161、matlab 传递函数的稳态值和上升时间可以得到在图中得到。 2、纯P控制的,包括PI控制。 掌握代码,读懂代码,修改代码。 新建文件,输入代码,运行,查看结果。 -
matlab中贝塞尔曲线和直线求交_人生中只有曲线前进的快乐,没有直线上升的成功。...
2020-12-05 00:41:37我们的问题不在没准备好、没时间、没精力、没经验,我们的问题在于总是想得太多,做得太少。如果你知道自己要去哪儿,并且已经在路上,那么全世界都会为你让路。 一个真正强大的人,不会把太多心思花在取悦和亲附... -
matlab step 幅值_反馈控制系统的性能和matlab指令计算
2021-01-31 14:32:01(3)熟悉二阶系统的几点位置与系统性能指标,如超调量、调节时间、上升时间、峰值时间等之间的关系式;(4)理解零点和第三个极点对二阶系统响应的影响;(5)理解基于综合性能指标的最优控制概念。一. 基本概念... -
matlab 特征波_反馈控制系统的性能和matlab指令计算
2020-12-14 17:12:54(3)熟悉二阶系统的几点位置与系统性能指标,如超调量、调节时间、上升时间、峰值时间等之间的关系式;(4)理解零点和第三个极点对二阶系统响应的影响;(5)理解基于综合性能指标的最优控制概念。一. 基本概念... -
matlab&c++混合编程
2019-03-31 15:37:03最近一直在做HARQ系统的搭建和LDPC有关编码译码部分的实现,对于i5cpu的笔记本电脑,matlab在1500码长时,一次译码的时间大概在0.1-0.2s,随着码长的增长而类似指数上升,对于数据集的渐进生成和大容量的数据传输... -
matlab实现 动态规划法的单位承诺
2020-12-03 13:20:29和最大发电机的功率输出,最小上下时间,上升率,所需的储备。启动成本可以是恒定的(冷的),热的/冷的或指数的。生产成本函数可以是线性的或二次的。结果可以以摘要或详细形式打印。程序的时间分辨率为1小时。 ... -
某温度控制系统的MATLAB仿真.pptx
2020-12-02 10:42:52课 程 设 计 报 告;过程控制课程设计任务书 题目 C某温度控制系统的 MATLAB 仿真 一 系统概况 设某温度控制系统方块图如图 ;注调节器比例带的说明;...主要性能指标如下 上升时间 tr=2.7min; 峰值时间tp=4.2min;11 -
基于Matlab的逆变器过电压仿真研究
2020-07-13 09:15:23PWM逆变器驱动异步电动机采用长电缆产生的电压反射现象,导致产生过...用Matlab建立模型进行仿真,得到电机端过电压与电缆长度和电压上升时间的关系。设计并仿真研究电机端接一阶RC滤波器对电动机端过电压的抑制效果。 -
Matlab实验(六)
2021-01-27 11:50:54最大超调量、上升时间、峰值时间、调节时间等暂态响应性能指标是相互关联的,当其中一个指标为最优时,有可能使得另一个指标的性能降低,为了达到整个系统综合性能指标的最优化,需要采取一些能体现综合性能的指标。... -
【语音处理】基于matlab GUI语音时域频域频谱图分析【含Matlab源码 527期】
2021-03-16 10:39:12一、简介 时域和频域是信号的基本性质,这样可以用多种方式来分析信号,每种方式提供了不同的角度。解决问题的最快方式不一定...时钟波形的两个重要参数是时钟周期和上升时间。 图中标明了1GHz时钟信号的时钟周期和10 -
matlab神经网络30个案例分析
2011-06-01 20:06:07每个故障样本中有8个特征,分别是前面提及过的:最大压力(P1)、次最大压力(P2)、波形幅度(P3)、上升沿宽度(P4)、波形宽度(P5)、最大余波的宽度(P6)、波形的面积(P7)、起喷压力(P8),使用SOM网络进行故障诊断。... -
求控制系统的性能指标(Mp,tr,ts,FAI),matlab
2012-11-21 15:34:22此为matlab的一个子函数,用于求一个控制系统的性能指标:超调量Mp,上升时间tr,调节时间ts,衰减率fai。用时调用即可。 -
MATLAB函数step()对单位负反馈系统求阶跃响应
2020-11-28 17:50:49在指定时间区间内绘出阶跃响应曲线,计算出上升时间 trt_{r}tr 、峰值时间tpt_{p}tp、超调量σ%\sigma\%σ%、调整时间tst_{s}ts。 需要安装Control System Toolbox™工具包,基于函数step()实现。 函数step()... -
基于单神经元的自适应PID算法实现步骤与MATLAB代码
2018-03-07 23:46:07自适应PID的好处在于它的灵活性,而神经网络PID正是因为它的可学习性决定了他的强大性,该文章使用的仅是单神经元,本以为性能可能不会太好,但是仿真发现无论是上升时间亦或是超调量等指标都还不错,拿出来与大家... -
计算机控制系统——z平面根轨迹法的MATLAB实现
2019-04-22 17:11:07对题图A 2-16所示的火星漫游车控制系统,试用z...设计要求为:(1)超调量,调节时间 ,上升时间。(2)速度误差系数 。采样周期T=0.1s。 控制系统的主要任务就是保证漫游车对斜坡输入信号 具有较好的动态跟踪性能。