⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 erstep.m

📁 xnsy算法的matlab实现
💻 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 + -