ich einen MATLAB-Skript, das eine ausführbare Datei (geschrieben in C++) mit dem system()
Befehl, wie so ruft: kann dauert ziemlich lange (bis zu mehreren Stunden)Wie kann ich MATLAB system() oder dos() bekommen, um die Konsolenausgabe in Echtzeit anzuzeigen?
exe_status = system('MySimulation.exe', arguments);
Da die ausführbaren Datei auszuführen, I einschließlich einer Funktion, die die verbleibende Zeit schätzt und diese an die Konsole ausgibt. Wenn ich die ausführbare Datei außerhalb von MATLAB, die Windows-Konsole laufen ungefähr wie folgt aussieht:
Simulation #B01 initiated...
Completion: 0.57% Time remaining: 183 m 2 s
Mit dem \r
Charakter, schreibt die „Vollendung“ Linie selbst jede Sekunde. Das funktioniert wirklich gut und lässt mich wissen, wann ich zurückkommen muss, um die Daten zu analysieren.
Leider hat das Aufrufen der ausführbaren Datei von der MATLAB-Konsole nicht den gleichen Effekt. MATLAB wartet, bis die ausführbare Datei beendet ist, bevor überhaupt eine Konsolenausgabe angezeigt wird, was meinen Timer unbrauchbar macht.
Ich habe die folgenden Befehle versucht, aber sie haben alle das gleiche Verhalten:
exe_status = system('MySimulation.exe', arguments);
exe_status = system('MySimulation.exe', arguments, '-echo');
exe_status = dos('MySimulation.exe', arguments);
exe_status = dos('MySimulation.exe', arguments, '-echo');
Wenn ich falsch bin lesen, scheint es, dass die MATLAB documentation legt nahe, dass '-echo'
verwendet werden kann, die Befehlsausgabe Echo während die ausführbare Datei noch läuft, aber es hat keine Auswirkungen auf mein spezielles Programm.
Was haben Sie bekommen, wenn Sie etwas wie 'system ('ping google.com')' 'versuchen? Hast du am Ende des Ping-Tests auch alles bekommen? Wenn es kein Problem für Sie ist, sollten Sie vielleicht jedes Mal eine neue Zeile drucken ... – obchardon
@obchardon Das tue ich eigentlich nicht; Es wird sequenziell an die Konsole ausgegeben. Soweit ich das beurteilen kann, verhält sich das System ("ping google.com") genau so wie "ping google.com" in der Windows-Konsole. – Jim
@obchardon Drucken der Abschlussinformationen als eine neue Zeile (einschließlich der "\ n" Zeichen) hilft nicht - alle Zeilen werden am Ende der ausführbaren Datei gedruckt. – Jim