【问题标题】:append arguments with matlab command使用 matlab 命令附加参数
【发布时间】:2014-02-18 09:22:52
【问题描述】:

我有一个功能:

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 命令来添加参数和值?

谢谢

【问题讨论】:

    标签: matlab


    【解决方案1】:

    这可以使用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')
    

    【讨论】:

    • 我正在寻找的是:每次我调用 myFunc(argsn,valueN,..) 它都会通过添加 args 和值来附加基本启动
    • @lola:如果我理解正确的话,这正是我回答的第一部分所做的。究竟什么不适合你?
    • 是的,但例如默认的启动调用是 launch('arg','value');所以我想用默认参数或附加参数来调用它,例如:如果我调用 myFunction(default) 它调用默认启动,如果我调用 myFunction('arg2',val2) 它调用 launch('arg', '值','arg2',val)
    • @lola:如果你使用我对myFunction 的定义,那么你可以使用myFunction()(相当于launch('arg1', 'value1'))和myFunction('arg2', 'value2')(相当于launch('arg1', 'value1', 'arg2', 'value2'))。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    • 2012-10-01
    • 2013-03-05
    • 2017-03-30
    • 2017-09-08
    相关资源
    最近更新 更多