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

the*_*alk 4 matlab function-call cell-array

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

myfunction('string1',value1,'string2',value2,...)
Run Code Online (Sandbox Code Playgroud)

例如

myfunction('A',5,'B',10)
Run Code Online (Sandbox Code Playgroud)

我想保持调用这个函数的能力,我不想改变varargin函数内部的评估.(除非('string1','string2',...,value1,value2,...)有帮助)

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

inputvar = 

'A'    [5]    'B'    [10]
Run Code Online (Sandbox Code Playgroud)

该单元阵列也具有可变长度.

我的意图是以某种方式调用我的函数如下:

myfunction( inputvar )
Run Code Online (Sandbox Code Playgroud)

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


我已经尝试生成一个类似的字符串

''string1',value1,'string2',value2'
Run Code Online (Sandbox Code Playgroud)

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

Dan*_*Dan 6

你应该能够这样做:

myfunction(inputvar{:})
Run Code Online (Sandbox Code Playgroud)

{:}创建逗号分隔列表


编辑: 例如:

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{:})
Run Code Online (Sandbox Code Playgroud)

收益:

ans =  5
ans =  10
ans =  5
ans =  10
Run Code Online (Sandbox Code Playgroud)