Ich arbeite an einem Projekt und habe viele Funktionen zu erstellen und sie brauchen viel Debugging, anstatt nur auf die Ausführen-Schaltfläche zu klicken, muss ich zum Befehlsfenster gehen und einen Funktionsaufruf geben.
unterstützt MATLAB die Zuweisung von Standardwerten zu Eingabeargumenten wie Python?
In Python
%Vor%Wenn Sie es jetzt aufrufen, ohne die Argumente zu übergeben, gibt es keine Fehler, aber wenn Sie dasselbe in MATLAB versuchen, wird ein Fehler ausgegeben.
Wenn Sie Standardwerte zuweisen, ist es unter Umständen einfacher zu verwalten, wenn Sie exist
Funktion statt nargin
.
Der Vorteil ist, dass Sie, wenn Sie die Reihenfolge der Argumente ändern, diesen Teil des Codes nicht aktualisieren müssen, aber wenn Sie nargin
verwenden, müssen Sie mit dem Zählen und Aktualisieren von Zahlen beginnen.
Wenn Sie eine komplexe Funktion schreiben, die eine Validierung von Eingaben, Standardargumentenwerten, Schlüssel / Wert-Paaren, Übergabe von Optionen als Strukturen usw. erfordert, können Sie die inputParser
Objekt. Diese Lösung ist wahrscheinlich zuviel für einfache Funktionen, aber Sie sollten es im Hinterkopf behalten für Ihre Monster-Funktion, die Gleichungen löst, Ergebnisse plottet und Ihnen Kaffee bringt. Es ähnelt ein wenig den Dingen, die Sie mit Pythons argparse
Modul machen können.
Sie konfigurieren ein inputParser
wie folgt:
Innerhalb einer Funktion würden Sie es normalerweise mit p.parse(varargin{:})
aufrufen und nach Ihren Parametern in p.Results
suchen. Einige kurze Demonstration auf der Kommandozeile:
Sie können das mit nargin
machen %Vor% Aber woher kommen a
und b
? Sind sie dynamisch zugewiesen? Weil das die Gültigkeit dieser Lösung beeinträchtigt.
Nach ein paar Sekunden des Googelns habe ich festgestellt, dass, wie es oft der Fall ist, Loren Shure hat dieses Problem bereits für uns gelöst . In diesem Artikel skizziert sie genau meine Methode oben, warum es hässlich und schlecht ist und wie man es besser macht.
Tags und Links arguments matlab function optional-parameters default-value