2017-05-11 3 views
-1

Ich habe eine Simulation, die zahlreiche Iterationen hat. Es gibt variable Matrizen, deren Werte ich während der Simulation überwachen möchte. Was sind gute Möglichkeiten, dies zu tun?Live-Anzeige von Variablen während MATLAB-Simulation

+0

'disp (Ihre_Variable)' innerhalb jeder Iteration? Oder, wenn Sie nur wollen, dass sie angezeigt werden, jedes Sagen "10" Iterationen: 'If mod (iter_index, 10) == 0, disp (Ihre_Variable); ende –

+0

Eigentlich habe ich darüber nachgedacht, ob ich sie in einem festen Fenster statt im Befehlsfenster sehen kann. Im Befehlsfenster ist viel Verkehr. – sumitstop

+0

Das kann getan werden, indem man ein 'text' Objekt in einer Figur verwendet und die' string' Eigenschaft des Objekts aktualisiert. Vergessen Sie 'drawnow' nicht, um die Ereigniswarteschlange zu leeren, damit der aktualisierte Text tatsächlich angezeigt wird –

Antwort

1

Ich habe zwei Werkzeuge, die ich regelmäßig für so etwas verwende.

1. Iterative Ausgang, Das funktioniert gut für eine Optimierung bei jeder Iteration

löscht, wo Sie eine Skalarfunktion Ausgabe, die Sie überwachen möchten, haben.

Vor meiner while Schleife, ich definiere screenOut = []; und eine Ausgabe Formel in screenOutFormat. In meiner Schleife nach der Berechnung für diese Iteration geschehen ist, werde ich so etwas wie

if iter <=2 
    bspace = []; 
else 
    bspace = repmat('\b', [1 length(screenOut)]); 
end 
screenOut = sprintf(screenOutFormat, iter, estimatedValue); 
fprintf([bspace screenOut]); 

So kann man den Ausgangspunkt zu sehen bekommt gelegt und jede Iteration ohne Ihre Befehlsfenster Geschichte zu zerstören.

2. Dynamische Updates auf eine Figur

Das funktioniert gut, wenn Sie etwas haben, können Sie zeichnen.

Bevor die Schleife beginnt, setzen Sie ein Grundstück mit

figH = figure(); 
progPlot = plot(Y); 

Dann mit jeder Iteration bis Sie

progPlot.YData = Y; 
drawnow(); 

Auf diese Weise können die Schätzung Sie interessieren Plotten weiterhin tun können.


Wenn Sie eine Matrix, die Ihnen wichtig sind, würde ich empfehlen die Elemente Abgreifen, die Sie wirklich interessiert sind und mit # 1. Aber wenn es etwas Nützlicheres gibt, das Sie plotten können, ist # 2 in der Regel bei längeren Schätz-/Simulationsroutinen interessanter.

Verwandte Themen