Kann man mit MATLAB einen Standardwert für Eingabeargumente für eine Funktion wie Python zuweisen?

7

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.

    
hj-007 20.09.2013, 13:37
quelle

4 Antworten

12

Wenn Sie Standardwerte zuweisen, ist es unter Umständen einfacher zu verwalten, wenn Sie exist Funktion statt nargin .

%Vor%

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.

    
Mohsen Nosratinia 20.09.2013, 14:32
quelle
7

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:

%Vor%

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:

%Vor%     
Bas Swinckels 20.09.2013 14:00
quelle
5

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.

    
Dan 20.09.2013 13:43
quelle
0

Sie können nargin in Ihrem Funktionscode verwenden, um zu erkennen, wenn keine Argumente vorhanden sind übergeben werden und Standardwerte zuweisen oder in diesem Fall tun, was Sie wollen.

    
am304 20.09.2013 13:43
quelle