如何将数组输入到函数的数组中

时间:2017-11-24 14:58:39

标签: arrays matlab function math

假设我有array[2 2]的象征性功能。每个元素代表一个函数。然后我用matlabFunction()函数将它转换为函数处理程序。到目前为止一切都还好。例如,当我输入2x2时,我可以获得f(1,1)答案矩阵。如何输入矢量而不是手动放置1 and 1。例如,我想定义x0=[1 1],然后放f(x0)。每次我获得Not enough input arguments.它会尝试放置1 to x,然后再放1 to x并给出答案。但是因为还有一个名为y的变量,它没有提供足够的输入参数错误。有什么建议吗?基本上我想创建f(x),其中f和x是矩阵。所以它变成了方程组。

例如:

variable1= [1 1]

 jac= @(a,b)reshape([b,a.*2.0+a.^2.*b.^2.*3.0,a+b.*2.0,a.^3.*b.*2.0],[2,2])
 jac(variable[1 1])
Not enough input arguments.

Error in symengine>@(a,b)reshape([b,a.*2.0+a.^2.*b.^2.*3.0,a+b.*2.0,a.^3.*b.*2.0],[2,2])

jac(1,1)

ans =

     1     3
     5     2

1 个答案:

答案 0 :(得分:1)

使用一个变量而不是两个变量来定义函数。即。

jac = @(x) reshape([x(2), x(1).*2.0+x(1).^2.*x(2).^2.*3.0, ...
   x(1)+x(2).*2.0, x(1).^3.*x(2).*2.0], [2,2]);

现在您可以将其输入为jac(variable1),按预期返回:

ans =

     1     3
     5     2

% where variable1 = [1 1]

但由于您因应用matlabFunction()而获得了匿名函数,因此您需要在制作符号函数时进行相应的更改,即使用syms x代替syms a b和将a替换为x(1),将b替换为代码中的x(2)