2021-05-25 传递函数阶跃响应指标的matlab计算
Posted studyer_domi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021-05-25 传递函数阶跃响应指标的matlab计算相关的知识,希望对你有一定的参考价值。
传递函数阶跃响应指标的matlab计算
对于一个常规的传递函数,我们在进行了阶跃仿真后经常需要给出对应的响应指标,
sys = tf(1,[1 2 3])
y = step(sys)
figure
plot(y)
求解对应的阶跃指标结果
%% 求阶跃响应的典型指标
function [OverShoot, RiseTime, PeakTime, AdjustTime, SteadyStateError] = GetPerformanceOfStepResponse(t, y, stepvalue, gTolerance)
% 超调量Mp:最大超调量规定为在暂态期间输出超过对应于输入的终值的最大偏离量
% 上升时间tr:在暂态过程中,输出第一次达到对应于输入的终值的时间(从t=0开始计时)
% 峰值时间tp:对应于最大超调量发生的时间(从t=0开始计时)
% 调整时间ts:输出与其对应于输入的终值之间的偏差达到容许范围(一般取5%或2%)所经历的暂态过程时间(从t=0开始计时)
% 稳态误差err:给定输入与稳态输出的差值
% 超调量和峰值时间
[OSValue, OSIndex] = max(y);
OverShoot = (OSValue - stepvalue)/stepvalue*100;
PeakTime = t(OSIndex);
% 上升时间
index = find(y >= stepvalue, 1, 'first');
RiseTime = t(index);
% 调整时间和稳态误差
index1 = find(y <= stepvalue*(1 - gTolerance), 1, 'last'); % 容许范围由全局变量指定
index2 = find(y >= stepvalue*(1 + gTolerance), 1, 'last');
if isempty(index2) % 如果没有超调量,此值为空
index = index1;
else
index = max(index1, index2);
end
index = max(index1, index2);
AdjustTime = t(index);
SteadyStateError = mean(y(index:end)) - stepvalue; % 这里的稳态误差计算为调整时间后的数据平均值与给定输入的差,概念上是最后时刻的值与给定输入的差
end
其中 t为时间,y为响应结果,stepvalue为阶跃数值,gTolerance为调整时间的误差
以上是关于2021-05-25 传递函数阶跃响应指标的matlab计算的主要内容,如果未能解决你的问题,请参考以下文章
MATLAB从入门到精通-控制系统动态特性的计算以及阶跃响应波德图等
matlab 绘制系统的单位阶跃响应曲线 并编写程序求峰值时间 超调量 [李园7舍_404]