2014-02-18 80 views
0

我有一個函數:與MATLAB命令附加參數

function launchMe(values) 

launch('arg1',values.value1,'arg2',values.value2) 
end 

我想創建一個可以添加到基本推出其他參數

功能myFunc的函數(值..) 結束

這個函數會以默認指定參數和如果additiolas ARGS推出=>會將其添加到發射功能

myFun(values) => launch('arg1',values.value1,'arg2',values.value2) 
myFun(values,'toto') => launch('arg1',values.value1,'arg2',values.value2,'toto') 
myFun(values,'arg3','tata') => launch('arg1',values.value1,'arg2',values.value2,'arg3','tata') 

是否有一個特定的matlab命令來添加參數和值?

感謝

回答

2

這可以很容易地使用varargin機制來實現:

function myFunction(varargin) 
    launch('arg1', 'value1', varargin{:}) 
end 

現在你可以做

myFunction('arg2', 'value2') 
myFunction('arg2', 'value2', 'arg3', 'value3') 

這些調用相當於

launch('arg1', 'value1', 'arg2', 'value2') 
launch('arg1', 'value1', 'arg2', 'value2', 'arg3', 'value3') 

如果您還通過launch輸出參數要管這種事情會稍微複雜一點:

function varargout = myFunction2(varargin) 
    if nargout == 0 
     launch('arg1', 'value1', varargin{:}); 
    else 
     varargout = cell(1, nargout); 
     [varargout{:}] = launch('arg1', 'value1', varargin{:}) 
    end 
end 

現在你可以做(​​假設launch返回正確數量的參數):

myFunction2('arg2', 'a') 
result = myFunction2('arg2', 'b') 
[result1, result2] = myFunction2('arg2', 'c') 
+0

什麼我正在尋找的是:每次我打電話給myFunc(argsn,valueN,..)時,都會通過添加參數和值來附加基本啓動信息 – lola

+0

@lola:如果我理解正確,那麼我的答案的第一部分就是這樣做的。什麼不適合你? –

+0

是的,但是例如默認的啓動調用是launch('arg','value');所以我想用默認參數或者加入參數來調用它:例如,如果我調用myFunction(默認),它會調用默認啓動,如果我調用myFunction('arg2',val2),它會調用launch('arg', 'value','arg2',val) – lola