Matlab in einer Figur aus der Funktion

489
alex_mike

Ich habe eine Funktion geschrieben, die eine Funktion y (t) mit 4 Eingabeargumenten darstellt.

function plot_me_n1(A,B,m1,m2)  t = linspace(0,10,10/0.01); y=A*exp(-m1*t) - B*exp(-m2*t); plot(t,y,'color',rand(1,4)); title('equation', 'fontsize', 10); ylabel('y(t)'); xlabel('t'); end 

Jetzt erstelle ich eine weitere Funktion, die an die Funktion plot_me_n1 multiple übergeben wird, um mehrere Diagramme zu erstellen.

figure  hold all A=[-8,8,-8]; B=[9,-9,-9]; m1=-3; m2=-4; arrayfun(@(a,b) plot_me_n1(a,b,m1,m2),A, B); hold off 

Das Problem ist, dass nur der letzte Plot angezeigt wird, während ich versuche, mehrere Plots gleichzeitig anzuzeigen. Es ist wichtig zu erwähnen, dass ich plot () nicht in die Funktion außerhalb der Funktion verschieben kann, da die Funktion plot_me_n1 möglich sein soll, um von sich aus unabhängig von anderen Skripten zu arbeiten. Wie kann man also alle Plots gleichzeitig in einer Figur darstellen? Alle Refactoring-Kommentare zur Verbesserung des Codes sind willkommen. Vielen Dank.

Eigentlich funktioniert das Skript einwandfrei, es überschneiden sich nur die Darstellungen.

1

1 Antwort auf die Frage

1
JockeR

Der holdBefehl wirkt auf die Achsen einer Figur. Ihr Code erzeugt eine Abbildung, die jedoch beim Aufruf keine Achsen enthält hold.

Beheben Sie dies, indem Sie den holdBefehl direkt nach Ihrem Plot setzen, um die vorherigen Plots in derselben Figur zu halten.

... plot(t,y,'color',rand(1,4)); hold on ... 

Das hold allwird in zukünftigen Matlab-Versionen ebenfalls entfernt hold on.