matlab - 在 Matlab 中调用具有不同数量参数的函数

标签 matlab parameter-passing cell-array

我正在使用符号工具箱生成一个 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/

相关文章:

matlab - 如何将元胞数组中不同大小的矩阵组合成MATLAB中的矩阵

arrays - 从单元格的单元格数组中检索第一个值

matlab - 在遗传算法中我们应该选择多少 parent 和哪些 parent 进行交叉

MATLAB:如果函数花费太长时间,则强制返回解决方案

c - 传递给函数的变量是否存储在连续的内存位置?

javascript - 在哪里传递公式字段的量化数据值?

matlab - 在二元尺度上创建高斯小波矩阵

matlab - 在 Matlab 中绘制包含 3d 点云的球体

java - 将命令行参数传递给多个 java 线程

matlab - 在Matlab中使用递归算法获得更多详细错误消息吗?