我需要传递给一个函数(在我的例子中为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)
但是常见的情况呢?为每个固定数量的参数编写函数调用是一种糟糕的编程风格。有没有办法传递一个数组,因为它被视为不同的变量?
答案 0 :(得分:2)
您可以将paramlist
转换为单元格数组(使用num2cell
),然后使用{:}
索引创建comma separated list,然后您可以将其用于索引{ {1}}。这将使handles{2}
的每个值作为单独的下标传递。
paramlist