单元格元素为逗号分隔的varargin函数的输入参数

时间:2013-10-09 14:42:23

标签: matlab cell-array function-call

想象一个具有可变数量输入参数的函数,交替地询问字符串和值。

myfunction('string1',value1,'string2',value2,...)

e.g。

myfunction('A',5,'B',10)

我希望能够像这样调用函数,我不想更改函数内varargin的评估。 (如果有帮助,('string1','string2',...,value1,value2,...)除外)

但我也将输入字符串和值存储在单元格数组inputvar <4x1 cell>中:

inputvar = 

'A'    [5]    'B'    [10]

此单元格数组也有可变长度。

我打算以某种方式调用我的函数:

myfunction( inputvar )

显然不起作用。我有什么想法可以将我的单元转换为有效的输入语法吗?


我已经尝试生成类似

的字符串
''string1',value1,'string2',value2'

并使用eval在函数调用中使用它。但它没有成功。那么,有没有办法将字符串转换为代码?

1 个答案:

答案 0 :(得分:6)

你应该能够这样做:

myfunction(inputvar{:})

{:}创建comma separated list


修改 例如:

function val = myfunction(string1,value1,string2,value2)
    if string1 == 'A'
      val = value1;
    else
      val = value2;
end

myfunction('A',5,'B',10)
myfunction('B',5,'B',10)
A = {'A',5,'B',10};
myfunction(A{:})
A = {'B',5,'B',10};
myfunction(A{:})

返回:

ans =  5
ans =  10
ans =  5
ans =  10