jennychung 发表于 2007-4-7 17:54

关于显示图形的问题

我已经将Axes属性中的Nextplot属性设为replace,
但是为什么后来画出的图形还是和前面的图形一起显示出来了呢?
我要单独显示啊!

eight 发表于 2007-4-7 19:42

原帖由 jennychung 于 2007-4-7 17:54 发表
我已经将Axes属性中的Nextplot属性设为replace,
但是为什么后来画出的图形还是和前面的图形一起显示出来了呢?
我要单独显示啊!


该属性并非这个意思。单独显示,可以使用2个figure,或者subplot

jennychung 发表于 2007-4-7 21:09

我想做的是:
按下plot按扭在axes里显示图像
再按一下plot,还是在axes里显示新画出的图象

eight 发表于 2007-4-7 21:11

原帖由 jennychung 于 2007-4-7 21:09 发表
我想做的是:
按下plot按扭在axes里显示图像
再按一下plot,还是在axes里显示新画出的图象


使用同一个figure的句柄就可以了

如果还是不行,给出你的代码吧

jennychung 发表于 2007-4-7 21:18

代码很长啊
简单一下
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdatareserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
hk=findobj('tag','edit1');K=str2num(get(hk,'string'));
ht=findobj('tag','edit2');T=str2num(get(ht,'string'));
hlei=findobj('tag','popupmenu1');lei=get(hlei,'value');
axes(handles.axes1);
switch lei
    case 1
      a=;b=';ts=0.05;=c2d(a,b,ts);
      xnl=';xnlold=xnl;xlin=';xlinold=xlin;t=0;u=4;tend=20;ks=2;gs=2;
      while t<tend
            t=;enl=gs*(u-xnlold(1));elin=gs*(u-xlinold(1));
            if enl>=ks,enlsat=ks;
            elseif enl<=-ks,enlsat=-ks;
            else enlsat=enl;
            end
            xnlold=phi*xnlold+del*enlsat;xnl=;
            xlinold=phi*xlinold+del*elin;xlin=;
      end
      plot(xlin(1,:),xlin(2,:),'b'),grid on;hold on;plot(xnl(1,:),xnl(2,:),'r');
    case 2
      .....      
      plot(xlin(1,:),xlin(2,:),'b'),grid on;hold on;plot(xnl(1,:),xnl(2,:),'r');
    case 3
      ......      
      plot(xlin(1,:),xlin(2,:),'b'),grid on;hold on;plot(xnl(1,:),xnl(2,:),'r');
    case 4
       ......      
       plot(xlin(1,:),xlin(2,:),'b'),grid on;hold on;plot(xnl(1,:),xnl(2,:),'r');
end

% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton2 (see GCBO)
% eventdatareserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
hk=findobj('tag','edit1');K=str2num(get(hk,'string'));;
ht=findobj('tag','edit2');T=str2num(get(ht,'string'));;
hlei=findobj('tag','popupmenu1');lei=get(hlei,'value');
axes(handles.axes1);
switch lei
    case 1
      a=;b=';ts=0.05;=c2d(a,b,ts);
      xnl=';xnlold=xnl;xlin=';xlinold=xlin;t=0;u=4;tend=20;ks=2;gs=2;
      while t<tend
            t=;enl=gs*(u-xnlold(1));elin=gs*(u-xlinold(1));
            if enl>=ks,enlsat=ks;
            elseif enl<=-ks,enlsat=-ks;
            else enlsat=enl;
            end
            xnlold=phi*xnlold+del*enlsat;xnl=;
            xlinold=phi*xlinold+del*elin;xlin=;
      end
      plot(t,xlin(1,:),'b'),grid on;hold on;plot(t,xnl(1,:),'r');
    case 2
      ....
      plot(t,xlin(1,:),'b'),grid on;hold on;plot(t,xnl(1,:),'r');      
    case 3
      ....
      plot(t,xlin(1,:),'b'),grid on;hold on;plot(t,xnl(1,:),'r');
    case 4
       ....
       plot(t,xlin(1,:),'b'),grid on;hold on;plot(t,xnl(1,:),'r');
end

guodd100 发表于 2007-4-7 21:20

用hold on命令
或者plot(x,y,x,z)

eight 发表于 2007-4-7 21:24

原帖由 jennychung 于 2007-4-7 21:18 发表
代码很长啊
简单一下
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdatareserved - to be defined in a future version of MATLA ...

按照你的代码,应该没有问题波。你说说如何运行的?

ps:可能是你hold on后没有hold off,即:
plot(xlin(1,:),xlin(2,:),'b'),grid on;hold on;plot(xnl(1,:),xnl(2,:),'r');hold off;
试试吧

jennychung 发表于 2007-4-7 21:27

果然有用 啊
谢谢拉
一直看到你,果然是高手啊
还有 个问题的
http://forum.vibunion.com/forum/viewthread.php?tid=40109&extra=page%3D1
帮忙看看啊

[ 本帖最后由 jennychung 于 2007-4-7 21:28 编辑 ]
页: [1]
查看完整版本: 关于显示图形的问题