我正在尝试制作一个包含各种脚本单元格的脚本文件,由%%
分隔。下面的代码返回一个旧图和一个圆。但是我想清除图形窗口,所以当我执行一个特定的脚本时,我只得到一个数字。
% Rita tan(x)
x=((-pi/2)+0.01:0.01:(pi/2)-0.01);
y=tan(x);
plot(x,y)
grid on
%%
% Exempel 1
x=linspace(0,8);
y=x.*sin(x);
plot(x,y)
title('f(x)=sin(x)')
%%
% Plot circle
t=linspace(0,2*pi);
x=cos(t); y=sin(t);
subplot(1,2,1)
plot(x,y)
title('Utan axis equal')
subplot(1,2,2)
plot(x,y)
axis equal
title('Med axis equal')
%%
% Funktionsytor
x=linspace(0,5,50);
y=linspace(0,5,50);
[X,Y]= meshgrid(x,y);
F=X.*cos(2*X).*sin(Y);
surf(X,Y,F)
%%
我得到的是:
我如何只获得其中一个?
答案 0 :(得分:2)
执行最后一节时,命令subplot(1,2,2)
定义的轴仍然是current axes,因此这是添加下一个图的位置。您可以在最后一节的开头close the previous (i.e. current) figure,以便为下一个绘图创建新的图形和轴:
% Funktionsytor
close(gcf);
x=linspace(0,5,50);
...
一般来说,在处理大量不同的figures或axes时,最佳做法是要求每个人都store unique handles。这样你就可以根据需要专门修改/关闭它们。例如,您可以将两个子图绘制在两个单独的图中,如下所示:
%%
% Plot circle
t = linspace(0, 2*pi);
x = cos(t);
y = sin(t);
hFigure1 = figure(); % Create first figure
plot(x, y); % Plot to axes in first figure
title('Utan axis equal');
hFigure2 = figure(); % Create second figure
plot(x, y); % Plot to axes in second figure
axis equal;
title('Med axis equal');
现在,您可以在代码中稍后根据需要关闭其中一个或两个:
close(hFigure1); % Closes the first figure, second still exists
答案 1 :(得分:1)
使用clf
(清晰图)从当前图中删除所有图形对象。由于您似乎可能以随机顺序执行脚本,因此出于上述原因,请在每个部分的开头使用clf
。
如果您按照问题中显示的顺序执行脚本,那么您只需在子图之后的部分开头添加clf
。