2016-07-05 7 views
2

Ich habe mir einen ähnlichen question angesehen, aber die Antwort sowie die damit verknüpfte Frage stimmen nicht mit meinem genauen Problem überein.Matlab finde die Position des Command Window Outputs

Angenommen, ich habe mehrere Matlab-Dateien, die von einem Programm ausgeführt werden. Während der Ausführung des Codes erhalte ich im Befehlsfenster mehrere Ausgaben, die ich loswerden möchte. Natürlich könnte ich nur grep alle disp und printf Befehle, kein Problem. Es besteht jedoch auch die Möglichkeit, dass bestimmte Berechnungen etwas drucken, ohne dass Matlab eine Warnung für ein fehlendes Semikolon ausgibt. Ein Beispiel wäre

function dummy1 
norm(1) 
end 

sein, die 1 in das Befehlsfenster drucken würde, aber Matlab mir nicht eine Warnung für ein fehlendes Semikolon geben, wie es der Fall für

function dummy2 
1+1 
end 

Gibt es eine Möglichkeit wäre, um die Position des Befehls zu erkennen, der zum Befehlsfenster druckt?

+0

Dies könnte einer der wenigen Fälle sein, in denen ich ['evalc'] (http://ch.mathworks.com/help/matlab/ref/evalc.html) verwenden würde, um alle Ausgaben an die Befehlszeile in zu unterdrücken den ersten Platz. Auf diese Weise können Sie Ihre Hauptfunktion aufrufen wie 'evalc ('main.m');'. Beachten Sie, dass "Tagebuch", "mehr" und "Eingabe" deaktiviert sind, wenn Sie 'evalc' verwenden. Dies beantwortet Ihre Frage nicht, sondern löst Ihr anfängliches * Problem *. – Matt

Antwort

0

Es gibt keine Notwendigkeit, es zu komplizieren. Platzieren Sie einfach einige Haltepunkte in Ihrem Code und durchlaufen Sie diese, bis Sie die Zeilen gefunden haben, die eine unerwünschte Ausgabe erzeugen. Unterdrücken Sie dann die Ausgabe mit ;. Die beste Vorgehensweise ist, niemals ; wegzulassen. Wenn Sie etwas schnell anzeigen möchten, verwenden Sie stattdessen Befehle wie disp.

Darüber hinaus sollten Sie sich daran gewöhnen, alles über einen geeigneten Logger zu protokollieren, wie z. log4j. Das gibt Ihnen eine feinkörnige Kontrolle darüber, was Sie tatsächlich protokollieren und wo Sie über eine einfache Konfiguration (und kann auch programmgesteuert geändert werden). Wenn Sie es verwendet hätten, wäre es kein Problem für Sie, herauszufinden, welche Protokollnachricht wo gedruckt wird, weil Sie den Komponentennamen sehen, der es gedruckt hat.

Verwandte Themen