2016-12-11 34 views
0

我仍然在學習matlab,今天只是爲了練習,我決定寫一個帶有可變數量參數的函數,它將在這些參數上執行像+,*這樣的操作。我有問題:如何在交換指令中傳遞一個符號作爲參數?

  • 有什麼辦法可以傳遞符號作爲這個函數的參數嗎?

    例如:功能(+,A,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 
相關問題