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为调整时间的误差

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值