代码如下:function [para,fv]=my_mle1(fun,para0,varargin)
para0=para0(:);
[para,fv]=fminsearch(fun,para0,[],2,varargin{:});
fv=-fv;
end
function f=pin(para,num,B,S)
alpha=para(1);
mu=para(2);
eb=para(3);
es=para(4);
delta=para(5);
M=(min(B,S)+max(B,S))/2;
xs=es/(es+mu);
xb=eb/(eb+mu);
yy=(-eb-es + M*(log(xb) +log(xs)) + ...
B*log(mu+eb)+S*log(mu+es) )+ ...
log( alpha*(1-delta)*exp(-mu)*(xs.^(S-M)) .*(xb.^sym(-M)) + ...
alpha* delta*exp(-mu) *(xb.^(B-M)).*(xs.^(-M)) + ...
(1-alpha)*(xs.^(S-M)).*(xb.^(B-M)));
if num==1
f=log(yy);
else
f=-sum(log(yy));
end
end
输入指令:B=x1PIN(:,3)
S=x1PIN(:,4)
[para,fv]=my_mle1('pin',[0.5;400;1000;1000;0.5],B,S)
结果出错,详细如下:
??? Conversion to double from sym is not possible.
Error in ==> fminsearch at 175
fv(:,1) = funfcn(x,varargin{:});
Error in ==> my_mle1 at 3
[para,fv]=fminsearch(fun,para0,[],2,varargin{:});
有没有会的大牛帮我解答下,万分感谢。详细的代码和数据我都放在求助区这个帖子里https://bbs.pinggu.org/thread-3855084-1-1.html请各位大牛回答,真的超感谢看了曹志广老师的书,案例不太一样,不知如何修改,还望各位牛人帮忙解答下,谢谢