我用的是这个代码:
y1=symfun(c^2+p^2, [c,p]);
y2=matlabFunction(y1)
[x,fval]=fminsearch(y2, [0 0])但它又回来了
使用makeFhandle/@(c,p)c.^2+p.^2时出错 输入参数不够。 fminsearch中的错误(第191行) fv(:,1) = funfcn(x,varargin{:});
我怎么才能避开这一切?
请注意,我使用的是symfun而不是函数句柄,因为我添加了几个函数。
发布于 2015-06-24 00:38:23
我建议查看fminsearch的文档,特别是多维实例提供的文档。来自y2的matlabFunction函数输出不满足这些要求。您可以手动更改它,也可以尝试使用'Vars'选项(如这个例子中的)。您需要将初始猜测指定为列向量,但您的示例可以重写为:
syms c p;
y1 = symfun(c^2+p^2, [c,p]);
y2 = matlabFunction(y1,'Vars',{[c;p]})
[x,fval] = fminsearch(y2, [0;0])当然,在这种情况下,哪一个返回平凡的解决方案[0;0]。
https://stackoverflow.com/questions/31014392
复制相似问题