📄 kstats.m
字号:
function [Mo,kp,kr,ks,ess] = kstats(k,y,ref)%KSTATS [Mo,kp,kr,ks,ess] = kstats(t,y,ref)% Takes a discrete time vector k and a corresponding % step-response vector y and returns time-domain % performance measures.%Inputs: k - discrete time vector % y - step response corresponding to k% ref - reference level at steady-state%Outputs: Mo - percent overshoot% kp - time to peak% kr - rise time (10% - 90%)% ks - settling time (2%)% ess - percent steady-state Error%%If the reference level, 'ref', is not specified, 1.0 is assumed.%%%%%%%%%%%%%%%%%%% kstats.m %%%%%%%%%%%%%%%%%%%%% Discrete-Time Control Problems using %% MATLAB and the Control System Toolbox %% by J.H. Chow, D.K. Frederick, & N.W. Chbat %% Brooks/Cole Publishing Company %% September 2002 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if nargin < 3 ref = 1; disp('reference value set = 1.0')end%[maxy,ikp] = max(y);kp = k(ikp);Mo = max(100*(maxy - ref)/ref,0);%i10 = min(find(y>=0.1*ref));i90 = min(find(y>=0.9*ref));if i10 > 0 & i90 < length(y) delk = k(2)-k(1); k10 = k(i10) - delk*(y(i10)-0.10*ref)... /(y(i10)-y(i10-1)); k90 = k(i90) - delk*(y(i90)-0.90*ref)... /(y(i90)-y(i90-1)); kr = k90 - k10;else kr = 9.9999;end%is = max(find(abs(y - ref*ones(size(y)))/ref>0.02));if is < length(y) ks = k(is + 1);else ks = max(k);end%ess = abs(100*(y(length(y)) - ref)/ref);%%%%%%%%%%
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -