4

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

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

例如

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在函数调用中使用它。但它没有成功。那么或者有没有办法将字符串转换为代码?

4

1 回答 1

6

你应该可以这样做:

myfunction(inputvar{:})

{:}创建一个逗号分隔的列表


编辑: 例如:

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
于 2013-10-09T14:43:32.513 回答