数组作为函数参数而不是Matlab中的变量

时间:2017-02-01 20:44:39

标签: matlab

我需要传递给一个函数(在我的例子中为jacobian())一个符号变量数组正在动态创建。说,

jacobian(handles{2}(t,y,paramlist),y)

其中paramlist=[var1, var2, var3, ..., varN]具有仲裁大小。这里的所有变量都是符号的,并且有各种名称。 MATLAB抛出一个错误:

  

没有足够的输入参数。

知道函数定义中的参数数量,可以单独传递所有参数。比如,n=3

 jacobian(handles{2}(t,y,paramlist(1),paramlist(2),paramlist(3)),y)

但是常见的情况呢?为每个固定数量的参数编写函数调用是一种糟糕的编程风格。有没有办法传递一个数组,因为它被视为不同的变量?

1 个答案:

答案 0 :(得分:2)

您可以将paramlist转换为单元格数组(使用num2cell),然后使用{:}索引创建comma separated list,然后您可以将其用于索引{ {1}}。这将使handles{2}的每个值作为单独的下标传递。

paramlist