2016-04-27 4 views
1

Verwendung des folgenden Codes:Wie Pause verwenden, um mit openvar in einer for-Schleife

tmpTable = table([1;2;3]); 

for i = 1:5 
    openvar tmpTable 
    pause 
end 

Wenn ich die for-Schleife laufen, alles, was ich bekommen, ist ein leerer Bildschirm im Variablen-Editor, mit Ausnahme der Dimensionen der Tabelle werden korrekt angezeigt. Wenn ich die for-Schleife unterbricht, wird die Tabelle korrekt angezeigt.

enter image description here

Meine Frage ist, wie kann ich diese Tabelle Anzeige machen programmatisch in der for-Schleife, mit einer Pause wie Befehl, der mir die Tabelle inspizieren können, bevor sie auf die nächste zu verschieben?

Antwort

1

Was passiert ist, dass pause den Haupt-MATLAB-Thread pausiert, weshalb Sie nichts im Variableneditor sehen. Sie müssen MATLAB in den Debug-Modus bringen, wenn der Haupt-MATLAB-Thread frei sein soll ... oder natürlich die Schleife aufbrechen, wie Sie herausgefunden haben.

Ein "hackischer" Weg, Dinge in Gang zu bringen, ist das Einfügen einer keyboard-Anweisung anstelle von pause, um MATLAB in den Debug-Modus zu versetzen. Sobald Sie dort sind, müssen Sie dbcont verwenden, um mit der nächsten Iteration der Schleife fortzufahren. Dies führt dazu, dass MATLAB erneut in den Debug-Modus wechselt, da die Anweisung keyboard erneut auftritt und somit der Haupt-Thread freigegeben wird. Dies wiederholt sich bis zur letzten Iteration.

Deshalb:

tmpTable = table([1;2;3]); 

for i = 1:5 
    openvar tmpTable 
    keyboard; %// Change 
end 

Sie werden dann K>> sehen, sobald Sie die erste Iteration der Schleife ausgeführt werden, wenn Sie an der Eingabeaufforderung zu suchen. Dies bedeutet, dass Sie sich im Debug-Modus befinden. Um mit der nächsten Iteration fortzufahren, geben Sie dbcont in die Eingabeaufforderung ein und drücken Sie ENTER. Sie können den letzten Befehl wiederverwenden, indem Sie den Aufwärts-Pfeil auf Ihrer Tastatur drücken und dann ENTER erneut drücken und dies bis zur letzten Iteration Ihrer Schleife tun. Sie müssen leider in die Eingabeaufforderung zurück klicken, da der Fokus auf den Variablen-Editor gelegt wird, bevor Sie den Befehl erneut eingeben. Wenn Sie den Debug-Modus jederzeit beenden möchten, verwenden Sie dbquit. Dadurch wird die Codeausführung beendet und Sie kehren zur Eingabeaufforderung zurück.

Dies ist die einzige Möglichkeit, den Haupt-MATLAB-Thread bei jeder Iteration freizugeben, die ich kenne.