[x,fval] = fminsearch(...)返回在结果x出的目标函数的函数值
[x,fval,exitflag] = fminsearch(...) 返回exitflag值来表示fminsearch退出的条件:
1--函数找到结果x
0--函数最大功能评价次数达到,或者是迭代次数达到
-1--算法由外部函数结束
[x,fval,exitflag,output] = fminsearch(...) 返回一个结构输出output,包含最优化函数的信息:output.algorithm 使用的优化算法
output.funcCount 函式计算次数
output.iterations 迭代次数
output.message 退出信息
如果fun是有参数的,那么可以定义个匿名函数去获得独立的参数,例如,若果需要估计的函数为
function f = myfun(x,a)
f = x(1)^2 + a*x(2)^2
因为myfun中有一个位置参数a,所以不能直接传给fminsearch中。所以需要最优化具体的a,例如a = 1.5
首先定义 a = 1.5;
然后x = fminsearch(@(x) myfun(x,a),[0,1])
示例:
>> a=@(x)sin(x(1))+cos(x(2))
a =
>> [x,fval,exitflag,output]=fminsearch(a,[-1,-1])
x =
fval =
exitflag =
output =