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在函数调用中使用它.但它没有成功.那么,有没有办法转换字符串代码?
你应该能够这样做:
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)