我目前正在Matlab中进行一个简单的函数优化,希望您能够对以下错误提供很少的帮助/解释:
%quadramin.m
function z=quadramin(param,data);
z=data.*(param(1).^2 - param(2).^3)+3;
%quadramin_lik.m
function quadlik = quadramin_lik(param,data);
%pseudo/ad-hoc log-likelihood function
quadlik = quadramin(param,data)- 10;
%script.m
data=trnd(5,6,1);
param0=[2,3];
[param_eq,exitflag,output,grad,hessian] = ...
fminunc(@(param) quadramin_lik(param,data),param0)
使用fminunc (第333行)用户提供的目标函数执行%script.m:错误后的输出必须返回标量值.
ps:它看起来很矛盾,因为用户定义的函数象限&& quadramin_lik确实返回值。
谢谢
发布于 2015-06-02 22:09:28
这两个函数都返回一个值向量,而fminunc
则要求该函数返回一个标量/单个值。错误很明显。函数fminunc
试图找到最小化成本函数的最佳解决方案,因此您需要提供的是一个成本函数。
因此,在返回结果之前,也许试着把每个函数的结果相加.但是这样做并不能保证全局最小值,因为fminunc假定成本函数是凸的。然而,从您的评论判断,因为您正在计算日志的可能性,然后总结是您应该做的任何方式!
https://stackoverflow.com/questions/30606902
复制相似问题