📄 stepr.m
字号:
%
% STEPR is the M-file used for plotting the step response
% curve(s) of the given system(s).
% Author: Ole Barup Sorensen, Rapid Data Ltd
% Copyright (c) 1989-94 by Rapid Data Ltd
% Revision 10:08 07/02/94
okflag=figflag(tit1,0);
if okflag==0
Fig18=figure('Numbertitle','off','Name',tit1,'Menubar','none',...
'Units','normal','Position',[110/Scx 10/Scy 440/Scx 350/Scy]);
set(0,'currentfig',Fig18);
% design menu
pt_menu
uimenu(Han_fil,'Label','Close','Sep','on','Callback',...
'close(Fig18);clear Fig18');
end
delete(gca);
tbeg = 0;
tgain = tend/150;
t_range = tbeg : tgain : tend;
config
clear tbeg tgain
mmm = step(num,den,t_range);
aa = roots(den); ii = find(aa>=0); ii=size(ii);
if ii == 0,
[nr,nc] = size(den);
t1 = num(nc)/den(nc);
else
t1 = 0;
end
ref = t1 * ones(size(mmm)); ref0 = ref;
if id > 9
ddd = step(numx,denx,t_range);
aa = roots(denx); ii = find(aa>=0); ii=size(ii);
if ii == 0,
[nr,nc] = size(denx);
t1 = numx(nc)/denx(nc);
else
t1 = 0;
end
refx = t1 * ones(size(ddd)); ref0 = [ref0 refx];
end
if t_delay ~= 0
n0 = size(t_range);
ii = find(t_range + eps >= t_delay);
mmm = [zeros(ii(1)-1,1);mmm(1:n0(2)-ii(1)+1)];
if id > 9
ddd = [zeros(ii(1)-1,1);ddd(1:n0(2)-ii(1)+1)];
end
clear ii;
end
mmm0 = mmm;
if id > 9, mmm0 = [mmm0 ddd]; end
plot(t_range,mmm0,t_range,ref0,'-');
if id <= 9
title('Step Response')
else
title('Step Response - Yellow: Compensated')
end
grid
xlabel('Time'), ylabel('Magnitude')
% find the step response performances, such as
% percent overshot, rising time, etc.
T1_str=' ';ov_str=' ';pt_str=' ';rt_str=' ';
st_str=' ';st_str=' ';DCg_str=' ';
T1_str1=' ';ov_str1=' ';pt_str1=' ';rt_str1=' ';
st_str1=' ';st_str1=' ';DCg_str1=' ';
rrt=roots(den);
if rrt<0,
if ptype == 1,
if (id <= 9),
T1_str='The system performance parameters is:';
else
T1_str='The compensated system performance is:';
end
[ov_str,rt_str,st_str,pt_str]=timrsp(t_range,mmm,ref);
mv = t_delay;
t_delay = 0;
config;
t_delay = mv;
clc
mv1 = dcgain(num,den);
DCg = abs(ref(1)-mv1);
DCg_str=['Steady state error: ',num2str(DCg)];
clear ref mv mv1 DCg
if (id > 9),
T1_str1='The uncompensated system performance is:';
[ov_str1,rt_str1,st_str1,pt_str1]=timrsp(t_range,ddd,refx);
mv = t_delay;
t_delay = 0;
config;
t_delay = mv;
mv1 = dcgain(numx,denx);
DCg = abs(refx(1)-mv1);
DCg_str1=['Steady state error: ',num2str(DCg)];
clear ovshot refx
end
end
else
T1_str='The system is unstable!!';
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -