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

Arrays 如何将数组输入到函数的数组中,arrays,matlab,function,math,Arrays,Matlab,Function,Math,假设我有一个符号函数array[2]。每个元素代表一个函数。然后我使用matlabFunction()函数将其转换为函数处理程序。到目前为止一切都好。例如,当我输入f(1,1)时,我可以得到2x2答案矩阵。如何输入向量而不是手动输入1和1。例如,我想定义x0=[11],然后放入f(x0)。每次我得到的输入参数都不够。它尝试将1放到x,然后再次将1放到x并给出答案。但因为还有一个变量叫y,所以它没有给出足够的输入参数错误。有什么建议吗?基本上我想创建f(x),其中f和x是矩阵。所以它变成了方程组

假设我有一个符号函数
array[2]
。每个元素代表一个函数。然后我使用
matlabFunction()
函数将其转换为函数处理程序。到目前为止一切都好。例如,当我输入
f(1,1)
时,我可以得到
2x2
答案矩阵。如何输入向量而不是手动输入
1和1
。例如,我想定义
x0=[11]
,然后放入
f(x0)
。每次我得到的
输入参数都不够。
它尝试将
1放到x
,然后再次将
1放到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

用一个变量而不是两个变量定义函数。i、 e

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]

但是,由于您是通过应用获得匿名函数的,因此您需要在创建符号函数时进行相应的更改,即使用
syms x
而不是
syms a b
,并用
x(1)
替换
a
,用
x(2)替换
b
在代码中。

请在代码中包含该符号函数和代码post@SardarUsama不要复制这个变量1=[1]jac=@(a,b)重塑([b,a.*2.0+a.^2.*b.*2.0,a+b.*2.0,a.^3.*b.*2.0],[2,2])jac(变量[1 1]),它会工作。在放置jac(1,1)来重新创建我的问题之后,我还编辑了问题,您可以从那里复制。另外,让我现在检查一下,但是这个函数来自matlab,我没有定义它。这是一个很长的代码,这就是为什么我给出了它的一部分。但一切都应该自动化。有没有办法让matlab按照您的建议将现有函数定义为一个变量?因为代码对输入函数求导,所以必须有不同的变量名才能得到其雅可比函数?@ssovukluk在编写时,您使用
matlabFunction
转换了函数,如果显示转换之前的函数,则可以用一个函数来定义它variable@ssovukluk您可以通过使用
syms x
而不是
syms a b
并在代码中用
x(1)
替换
a
,用
x(2)
替换
b
来修复此问题。如果你这样做,我很肯定你的问题会得到解决fixed@ssovukluk似乎是一个有趣的人工智能。祝你工作顺利!