📄 erstep.m
字号:
function erstep(action,in1,in2);
if nargin<1,
action='start';
end;
global ERSTEP_DAT
if strcmp(action,'start'),
% graphics initialization
%clf reset;
set(gcf,'Units','normalized','backingstore','off');
% Create intial ernal
min_k =-0.06;
max_k =1.06;
k=0.707;
[t,s,q]=st(k);
k_text=uicontrol('Style','text','Position',[.130 .02 .10 .06],...
'Units','normalized','BackgroundColor','black',...
'ForegroundColor','white','String','阻尼比:');
uicontrol('style','text','pos',[.136 .1 .07 .05],...
'Units','normalized','BackgroundColor','black',...
'ForegroundColor','white','String',num2str(min_k));
uicontrol('style','text','pos',[.5 .1 .06 .05 ],...
'Units','normalized','BackgroundColor','black',...
'ForegroundColor','white','String',num2str(max_k));
k_field=uicontrol('Style','edit','Position',[.39 .02 .12 .07],...
'Units','normalized','String',num2str(k),...
'CallBack','erstep(''setk'',2); erstep(''redraw'');');
k_slider=uicontrol('Style','slider','Position',[.15 .15 .4 .04],...
'Units','normalized','Value',k,'Max',max_k,'Min',min_k,...
'Callback','erstep(''setk'',1); erstep(''redraw'');');
d_field=uicontrol('Style','edit','Position',[.68 .02 .16 .045],...
'Units','normalized','String',num2str(q(4)));
ts_field=uicontrol('Style','edit','Position',[.68 .06 .16 .045],...
'Units','normalized','String',num2str(q(3)));
tp_field=uicontrol('Style','edit','Position',[.68 .1 .16 .045],...
'Units','normalized','String',num2str(q(2)));
tr_field=uicontrol('Style','edit','Position',[.68 .14 .16 .045],...
'Units','normalized','String',num2str(q(1)));
uicontrol('style','text','pos',[.6 .02 .06 .04 ],...
'Units','normalized','BackgroundColor','black',...
'ForegroundColor','white','String','d%:');
uicontrol('style','text','pos',[.6 .06 .06 .04 ],...
'Units','normalized','BackgroundColor','black',...
'ForegroundColor','white','String','Ts:');
uicontrol('style','text','pos',[.6 .10 .06 .04 ],...
'Units','normalized','BackgroundColor','black',...
'ForegroundColor','white','String','Tp:');
uicontrol('style','text','pos',[.6 .14 .06 .04 ],...
'Units','normalized','BackgroundColor','black',...
'ForegroundColor','white','String','Tr:');
close_button=uicontrol('Style','Pushbutton','Position',[.85 .02 .12 .07],...
'Units','normalized','Callback','erstep(''done'')','String','Close');
help_button=uicontrol('Style','Pushbutton','Position',[.85 .102 .12 .07],...
'Units','normalized','Callback','erhelp','String','Help');
% step domain
ax_s=axes('Position',[.15 .33 .8 .56],'XLim',[0 15],'YLim',[-1 3]);
%set(ax_s,'titlecolor',[1,1,1]);
s_line=plot(t,s,'EraseMode','xor');
% (set to xor mode to prevent re-rendering, that is, for speed)
axis([0 15 -1 3]);
grid;
ylabel(' h(t)','color','y');
xlabel('Time (Seconds)','color','y');
title('二阶系统不同阻尼比时的阶跃响应','color','y');
ERSTEP_DAT = [k; min_k; max_k;s_line; k_field;k_slider;...
ax_s;d_field;tr_field;tp_field;ts_field ];
elseif strcmp(action,'redraw'),
k=ERSTEP_DAT(1);
set(ERSTEP_DAT(5),'string',num2str(k));
set(ERSTEP_DAT(6),'value',k);
[t,s,q]=st(k);
set(ERSTEP_DAT(4),'YData',s);
set(ERSTEP_DAT(8),'string',num2str(q(4)));
set(ERSTEP_DAT(9),'string',num2str(q(1)));
set(ERSTEP_DAT(10),'string',num2str(q(2)));
set(ERSTEP_DAT(11),'string',num2str(q(3)));
drawnow;
elseif strcmp(action,'setk'),
if (in1==1), % set from slider
ERSTEP_DAT(1)=get(ERSTEP_DAT(6),'value');
else % set from edit text
min_k=ERSTEP_DAT(2);
max_k=ERSTEP_DAT(3);
k=str2num(get(ERSTEP_DAT(5),'string'));
if (k>max_k),
k=max_k;
end;
if (k<min_k),
k=min_k;
end;
ERSTEP_DAT(1)=k;
end
elseif strcmp(action,'done'),
clf reset;
clear global ERSTEP_DAT
close(gcf);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -