我正在使用符号工具箱生成一个 matlab 函数。但是生成函数的输入数量随我需要的对象数量(例如,开关数量)而变化。对于 2 和 3 开关,生成的函数如下所示:
y = fun(a1,a2,b1,b2)
y = fun(a1,a2,a3,b1,b2,b3)
在使用这个函数的脚本中,我建立了这些参数的向量:
a = [a1 a2 ...]
我想要的是要么直接调用生成的函数,要么做一个包装函数,这样当我改变开关数量时,我不需要改变调用语句。使这个问题更加复杂的是,这些变量是 ACADO 变量。这意味着不允许矩阵和元素运算(即,所有数学运算都必须用标量完成,符号工具箱中的方程必须为标量编写)。
最佳答案
您可能会寻找元胞数组和 {:}
运算符。它将单元格的内容更改为 coma separated list .结果可以作为参数传递给函数。例如:
v2 = {a1, a2, b1, b2};
v3 = {a1, a2, a3, b1, b2, b3};
还有一个示例函数:
function fun(varargin)
display(['number of parameters: ' num2str(nargin)]);
您可以“透明地”调用不同数量参数的函数,如下所示
fun(v2{:})
number of parameters: 4
fun(v3{:})
number of parameters: 6
关于matlab - 在 Matlab 中调用具有不同数量参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12741843/