2016-12-11 10 views
0

私はまだmatlabを勉強していますが、今日は練習のために、それらの引数に+、*のような操作を行う可変数の引数を持つ関数を書くことにしました。私は質問があります:スイッチ命令の引数としてシンボルを渡す方法は?

  • この関数の引数としてシンボルを渡す方法はありますか?例えば

    :関数(+、B、3)の助けを

おかげ。

+0

私はそう信じていませんが、多分あなたは、あなたが実際に我々は適切な代替 – Suever

+2

あなたは、文字、または関数ハンドルを渡すことができますいずれかを判断するのに役立つことができます何をしようとしての例を提供する場合。あなたがしようとしていることは不明です。 – beaker

答えて

0

@beakerは既に述べたように、文字列(char配列)または関数を渡すことができます。 varargin/narginを使用して処理できる引数の可変数。例を参照してください。

function [result] = myfunc(op, varargin) 
    if strcmp(class(op), 'function_handle') 
     result = op([varargin{:}]); 
     return; 
    end 

    switch(op) 
     case '+' 
      result = sum([varargin{:}]); 

     case '*' 
      result = prod([varargin{:}]); 

     otherwise 
      error('unexpected input'); 
    end 
end 



>> myfunc(@sum, 1, 2, 3, 4) 
ans = 
    10 

>> myfunc('+', 1, 2, 3, 4) 
ans = 
    10 
関連する問題