清除某种类型的所有图形对象

时间:2013-05-19 14:04:56

标签: matlab user-interface matlab-figure matlab-guide

我用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)

我只使用一个主GUI图。我的菜单栏包含大量的图表和计算,而不仅仅是这两个。

1 个答案:

答案 0 :(得分: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