www.gusucode.com > Matlab动力系统和时间序列分析工具箱 > Matlab动力系统和时间序列分析工具箱/lab432/gui/draw_portrait.m

    function draw_portrait;
%Function draws phase portrait

% last modified 29.02.04

global TS GSD_GLOBALS

[h, fig] = gcbo;
L=length(GSD_GLOBALS.view_phase_portrait.ListBox);
val=get(h,'value');
if val>1
    if h==GSD_GLOBALS.view_phase_portrait.ListBox(1)
        set(fig,'currentaxes',GSD_GLOBALS.view_phase_portrait.ax(1));
        set(GSD_GLOBALS.view_phase_portrait.ax(1),'visible','on');
    elseif h==GSD_GLOBALS.view_phase_portrait.ListBox(2)
        set(fig,'currentaxes',GSD_GLOBALS.view_phase_portrait.ax(2));
        set(GSD_GLOBALS.view_phase_portrait.ax(2),'visible','on');
    else
        set(fig,'currentaxes',GSD_GLOBALS.view_phase_portrait.ax(3));
        set(GSD_GLOBALS.view_phase_portrait.ax(3),'visible','on');
    end
    plot(TS.time,TS.data(:,val-1));
else
    if h==GSD_GLOBALS.view_phase_portrait.ListBox(1)
        set(fig,'currentaxes',GSD_GLOBALS.view_phase_portrait.ax(1));
        set(GSD_GLOBALS.view_phase_portrait.ax(1),'visible','off');
    elseif h==GSD_GLOBALS.view_phase_portrait.ListBox(2)
        set(fig,'currentaxes',GSD_GLOBALS.view_phase_portrait.ax(2));
        set(GSD_GLOBALS.view_phase_portrait.ax(2),'visible','off');
    else
        set(fig,'currentaxes',GSD_GLOBALS.view_phase_portrait.ax(3));
        set(GSD_GLOBALS.view_phase_portrait.ax(3),'visible','off');
    end
    cla
end

selection=[];
for i=1:L
    val=get(GSD_GLOBALS.view_phase_portrait.ListBox(i),'value');
    if val>1
        selection=[selection val];
    end
end

set(fig,'currentaxes',GSD_GLOBALS.view_phase_portrait.ax(4));

switch length(selection)
    case {0,1}
        set(GSD_GLOBALS.view_phase_portrait.ax(4),'visible','off');
        cla;
        set(GSD_GLOBALS.view_phase_portrait.PPText,'visible','off');
    case 2
        set(GSD_GLOBALS.view_phase_portrait.PPText,'visible','on');
        set(GSD_GLOBALS.view_phase_portrait.ax(4),'visible','on');
        cla;
        plot(TS.data(:,selection(1)-1),TS.data(:,selection(2)-1)),grid on;
        set(xlabel(TS.name{selection(1)-1}),'interpreter','none');
        set(ylabel(TS.name{selection(2)-1}),'interpreter','none');
    case 3
        set(GSD_GLOBALS.view_phase_portrait.PPText,'visible','on');
        set(GSD_GLOBALS.view_phase_portrait.ax(4),'visible','on');
        cla;
        plot3(TS.data(:,selection(1)-1),TS.data(:,selection(2)-1),TS.data(:,selection(3)-1));
        grid on;
        set(xlabel(TS.name{selection(1)-1}),'interpreter','none');
        set(ylabel(TS.name{selection(2)-1}),'interpreter','none');
        set(zlabel(TS.name{selection(3)-1}),'interpreter','none');
end