|
代码如下: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{:});
有没有会的大牛帮我解答下,万分感谢。详细的代码和数据我都放在附件里
代码调试.zip
(2.35 KB)
本附件包括:- main.m
- my_mle1.m
- pin.m
- data.txt
|