web-dev-qa-db-de.com

Plot innerhalb einer Schleife in MATLAB

Ich mache so etwas:

a = [1:100];
for i=1:100,
    plot([1:i], a(1:i));
end

Mein Problem ist, dass die Zeichnung nicht angezeigt wird, bis die Schleife beendet ist.

15
Macarse

Verwenden Sie DRAWNOW

a = [1:100];
for i=1:100,
 plot([1:i], a(1:i));
 drawnow
end

Alternativ können Sie ANYMATE aus dem Dateiaustausch betrachten.

20
Jonas

Wenn Sie dies nur visualisieren möchten, ohne die Animation zu speichern, können Sie dies auch tun, indem Sie refreshdata anstelle von plot für nachfolgende Darstellungen verwenden. Sie müssen weiterhin drawnow aufrufen, um die Aktualisierung auf dem Bildschirm durchzuführen.

entweder verwenden

set(fig_handle,'XData',new_xdata_array)
set(fig_handle,'YData',new_ydata_array)
refreshdata
drawnow

oder verwenden

set(fig_handle,'XDataSource',xdata_array)
set(fig_handle,'YDataSource',ydata_array)

%call this whenever xdata_array and ydata_array are assigned new values to see it updated in the plot
refreshdata
drawnow

für Ihr Beispiel könnte dies wie folgt aussehen:

a=[1:100];

figure;
h=plot(1,a(1));
for i=2:100
  set(h,'XData',[1:i])
  set(h,'YData',a(1:i))
  refreshdata
  drawnow
end

Für einfache Liniendiagramme (für die plot(); drawnow; einfacher und schneller ist) ist dies nicht sehr nützlich. Wenn Sie jedoch kompliziertere Figuren mit mehreren Plottypen erstellen müssen, kann dies nützlich sein.

5
JS Ng

Aus der Dokumentation zu comet.m

t = 0:.01:2*pi;
x = cos(2*t).*(cos(t).^2);
y = sin(2*t).*(sin(t).^2);
comet(x,y);
3
MatlabDoug

Mit Matlab können Sie eine Schleifenanweisung für Variablen sortieren

x = 0.0:0.1:2*pi

plot(x,cos(x));

ist ein Beispiel......

Oft müssen Sie nicht unbedingt in einer Schleife plotten

0
user3124024