2017-09-11 27 views
2

我正在试图制作一个脚本文件,其中包含各种脚本单元格,由%%分隔。以下代码返回一个旧图和一个圆。但是我想清除数字窗口,所以当我执行一个特定的脚本时,我只能得到一个数字。Matlab。一个脚本单元格返回两个数字

% 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) 
%% 

我得到的是:

enter image description here

如何只得到其中的一个?

回答

1

使用clf (清除图)从当前图中删除所有图形对象。由于您可能会以随机顺序执行脚本,因此,在每个部分的开头处使用clf来说明原因。
如果您按照问题中所示的相同顺序执行脚本,则可以在子图之后的部分开始处添加clf

+0

哦,上帝......我一直在按RUN而不是RUN部分......我很抱歉...但是非常感谢代码,它真的帮助了我很多好友。要迟到了... – Parseval

2

执行最后一段时,由命令subplot(1,2,2)定义的轴仍然是current axes,因此这是添加下一个绘图的位置。您可以close the previous (i.e. current) figure在那最后一节,以便为下一个情节创造了一个新的人物和斧头的开头:

% Funktionsytor 
close(gcf); 
x=linspace(0,5,50); 
... 

一般情况下,有很多不同的figuresaxes的问题时,最好的做法决定了你应为每个人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 
+0

我在哪里添加该命令?我刚刚在命令窗口中输入它,但它只是克服了数字窗口。然后我跑了脚本,但结果仍然一样。 – Parseval

+0

@Parseval:你在'%Funktionsytor'后面添加它。 – gnovice

+0

所以现在我只能得到最后一个脚本的情节,但我怎么才能得到上面的循环脚本的情节? – Parseval

相关问题