假设我有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
答案 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)
。