用matlab命令追加参数

时间:2014-02-18 09:22:52

标签: matlab

我有一个功能:

function  launchMe(values)

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

我想创建一个可以添加到基本启动其他参数的函数

函数myFunc(values,..) 端

并且此函数将使用默认args调用启动,如果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命令来添加args和值?

由于

1 个答案:

答案 0 :(得分: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')