2014-02-18 2 views
0

У меня есть функция:Append аргументы с командой MatLab

function launchMe(values) 

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

Я хотел бы создать функцию, которая может добавить к основному запуску другим аргументам

функции MyFunc (значения, ..) конца

и эта функция будет вызывать запуск с по умолчанию арга и если additiolas арга => он добавил их к функции запуска

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, ..), он добавляет базовый запуск, добавляя args и значения – lola

+0

@lola: Это именно то, что делает первая часть моего ответа, если я правильно вас понимаю , Что именно не работает для вас? –

+0

да, но, например, по умолчанию запускается запуск запуска ('arg', 'value'); поэтому я хотел бы назвать его с помощью аргументов по умолчанию или с дополнительными аргументами, например: если я вызываю myFunction (по умолчанию), он вызывает запуск по умолчанию и, если я вызываю myFunction ('arg2', val2), он вызывает запуск ('arg', 'value', 'arg2', val) – lola

Смежные вопросы