2016-05-02 6 views
0

Ich habe eine Funktion:Ignorieren Matlab Eingabeargumente

function myself(a,b,c,d) 

Ich möchte in einem Code um diese Funktion nutzen, indem nur geben, Argumente a und b. Ich möchte die Argumente c und d ignorieren.

Wie geht das? Danke.

+0

Warum gibt Dummy-Variablen keine Option? –

Antwort

6

Check out varargin und nargin

function output = myself(varargin) 

if nargin > 0 
    a = varargin{1}; 
    if nargin > 1 
     b = varargin{2}; 
     if nargin > 2 
      c = varargin{3}; 
      if nargin > 3 
       d = varargin{4}; 
      end 
     end 
    end 
end 

Sie können auch Standardwerte auf diese Weise definieren:

function output = myself(varargin) 

if nargin > 0 
    a = varargin{1}; 
    if nargin > 1 
     b = varargin{2}; 
     if nargin > 2 
      c = varargin{3}; 
      if nargin > 3 
       d = varargin{4}; 
      else 
       d = 0; 
      end 
     else 
      c = 0; 
     end 
    else 
     b = 1; 
    end 
a = 50; 
end 

Beachten Sie, dass viele vielleicht switch verwenden wählen statt if, else. Das ist eine Frage der persönlichen Präferenz.

function output = myself(varargin) 

switch nargin 
    case 1 
     a = varargin{1}; 
    case 2 
     [a, b] = varargin{:}; 
    case 3 
     [a, b, c] = varargin{:} 
    otherwise 
     [a, b, c, d] = varargin{:}; 
end 
3

Stewie Die Antwort ist sehr gut, wenn Sie viele Standardargumente haben. Wenn Sie jedoch nur eine Eingabe haben, die nicht immer verwendet wird, können Sie sie gezielt überprüfen:

+0

Nice addition =) Ich weiß, es ist leicht zu vermeiden, aber wissen Sie, ob die Ausführung Ihres gesamten Codes innerhalb einer 'if'-Anweisung irgendwelche Nachteile hat? Formatieren in Kommentaren ist Quatsch, aber ich werde es versuchen: 'Funktion myfun (a, b, c, d) wenn ~ existieren ('d', 'var') execute_long_and_complex_code; sonst gebe 0 zurück; Ende? –

+0

@StewieGriffin warum nicht den Zustand umkehren? 'falls vorhanden ('d', 'var'), gebe 0 zurück; Ende; do_what_ever_you_like_here; ' – Shai

+0

@StewieGriffin Ich habe nie nach irgendwelchen Nachteilen gesucht, aber manchmal ist es einfacher (zumindest für mich), diese 'exist'-Prüfung zu verwenden, anstatt' varargin' aufzuzählen. – Shai

Verwandte Themen