2017-09-11 4 views
2

Ich versuche, eine Skriptdatei mit verschiedenen Skriptzellen darin zu erstellen, getrennt durch %%. Der folgende Code gibt eine alte Zahl und einen Kreis zurück. Ich möchte jedoch das Zahlenfenster löschen, sodass ich nur eine Zahl erhalte, wenn ich ein bestimmtes Skript ausführe.Matlab. Eine Skriptzelle gibt zwei Zahlen zurück

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

Was ich erhalte, ist:

enter image description here

Wie bekomme ich nur einer von ihnen?

Antwort

1

Verwenden clf (clear figure) um alle Grafikobjekte aus der aktuellen Figur zu löschen. Da es wahrscheinlich ist, dass Sie Skripte in zufälliger Reihenfolge ausführen, verwenden Sie am Anfang jedes Abschnitts clf aus dem angegebenen Grund.
Wenn Sie das Skript in derselben Reihenfolge wie in der Frage ausführen, können Sie am Anfang des Abschnitts clf nach Teilplots hinzufügen.

+0

Oh Gott ... Ich habe RUN anstatt RUN SECTION gedrückt ... Es tut mir so leid ... aber vielen Dank für die Codes, es hat mir wirklich sehr geholfen, Kumpel. Es wird spät... – Parseval

2

Wenn der letzte Abschnitt ausgeführt wird, werden die Achsen durch den Befehl definiert subplot(1,2,2) ist immer noch die current axes, so dass dort, wo Ihre nächste Handlung ist hinzugefügt wird. Sie können close the previous (i.e. current) figure zu Beginn des letzten Abschnitts, so dass eine neue Figur und Achsen für die nächste Handlung angelegt:

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

Im Allgemeinen, wenn sie mit einer Menge verschiedenen figures oder axes, Best Practice, dass Sie bestimmen den Umgang sollte store unique handles für jeden von ihnen. Auf diese Weise können Sie sie nach Bedarf ändern/schließen. Zum Beispiel könnten Sie Ihre zwei Handlungsstränge in zwei getrennten Figuren wie so Grundstück:

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

Jetzt können Sie entweder eine schließen, oder beides, wie später im Code benötigt:

close(hFigure1); % Closes the first figure, second still exists 
+0

wo füge ich diesen Befehl hinzu? Ich habe es gerade im Befehlsfenster eingegeben, aber es hat nur das Figurenfenster geklebt. Dann habe ich das Skript aber immer noch gleich ausgeführt. – Parseval

+0

@Parseval: Sie fügen es in der Zeile nach '% Funktionsytor' hinzu. – gnovice

+0

So jetzt bekomme ich nur die Handlung des letzten Skripts, aber wie kann ich nur die Handlung des Kreises Skript oben erhalten? – Parseval

Verwandte Themen