2013-05-19 23 views
1

我使用MATLAB創建了一個GUI程序,帶有一個菜單欄和選項卡,每個選項都包含一個圖形,一個文本框等。問題是,當我從菜單欄中選擇一個選項卡並繪製一些東西,來自前地塊的軸對象不會消失。清除特定類型的所有圖形對象

我試圖用cla reset失敗。 clf工作,但我的菜單欄也消失了。

這裏是我的代碼:

function fel1_Callback(hObject, eventdata, handles) %% plot sin(x)  
    cla reset 
    clc 
    clear all 

    d = inputdlg('n:','Ertekadas',1); 
    n = str2double(d); 

    x=linspace(-3*pi,3*pi,1000); 
    y=sin(x); 
    plot(x,y,'k','LineWidth',4) 
    sz='ymcrgbkymcrgbkymcrgbkymcrgbk'; 
    hold on 
    title('Sin(x) Taylor sora') 
    %n = str2num(N); 
    f=zeros(size(x)); 
    for i=1:n 
     t=(-1)^(i-1)*x.^(2*i-1)/factorial(2*i-1); 
     f=f+t; 
     plot(x,f,sz(i),'LineWidth',2) 
     axis([-10 10 -10 10]) 
     pause(0.1) 
     hold on 
     n=n+1; 
    end 

function fel7_Callback(hObject, eventdata, handles) %%Sum 1/n^2 
    clear all 
    clc 
    cla reset 

    title('Suma 1/n^2','fontsize',20) 
    d = inputdlg('Epszilon:','Ertek',1); 
    epsz = str2double(d); 
    n=1; 
    x=0; 
    while 1/n^2>epsz 
     x=x+sum(1/n^2); 
     n=n+1; 
    end 

    A = uicontrol('style','text','units','pixels',... 
     'position',[550 550 120 40],'fontsize',20,'string','Epsz ='); 
    B = uicontrol('style','text','units','pixels',... 
     'position',[670 550 120 40],'fontsize',20); 
    set(B,'String',epsz) 
    C = uicontrol('style','text','units','pixels', ... 
     'position',[550 400 120 40],'fontsize',20,'string','Osszeg ='); 
    D = uicontrol('style','text','units','pixels',... 
     'position',[670 400 120 40],'fontsize',20); 
    set(D,'String',x) 

我只用一個主界面的身影。我的菜單欄包含很多繪圖和計算,不僅僅是這兩個。

回答

0

問題是,堅持防止任何東西被擦除,只是不斷添加到情節。你的代碼中沒有任何地方能夠延緩。如果要繼續使用hold命令,則代碼需要如下所示:

function fel1_Callback(hObject, eventdata, handles) %% plot sin(x)  

d = inputdlg('n:','Ertekadas',1); 
n = str2double(d); 

x=linspace(-3*pi,3*pi,1000); 
y=sin(x); 
hold off % The next plot command should now clear the old plot and create a new one** 
plot(x,y,'k','LineWidth',4) 
sz='ymcrgbkymcrgbkymcrgbkymcrgbk'; 
hold on 
title('Sin(x) Taylor sora') 
%n = str2num(N); 
f=zeros(size(x)); 
for i=1:n 
    t=(-1)^(i-1)*x.^(2*i-1)/factorial(2*i-1); 
    f=f+t; 
    plot(x,f,sz(i),'LineWidth',2) 
    axis([-10 10 -10 10]) 
    pause(0.1) 
    %hold on %not necessary, this was turned on before the loop 
    n=n+1; 
end 
hold off % return the figure to the normal (default) "hold off" state 
相關問題