全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
5088 8
2010-04-05
已知一组数据(共1570个),已知其分布的密度函数(非常复杂),怎么估计其中的参数啊!
我写了个程序是这样的,但老是运行出错
function w=myfun(l)
global A
c=(2^((1-l(1))*0.5))/(gamma(l(1)*0.5)*(pi*l(1))^(0.5)*l(3)^(0.5));
e=((l(1)+(A-l(2)).^2./l(3)).*(l(4)^2)./l(3)).^(0.5);
h=double(0.5*(l(1)+1));
e1=single(e);
d=besselk(h,e1);
f=(c.*d.*exp(((A-l(2)).*l(4))./l(3)))./(e.^(-(l(1)+1)*0.5).*(1+((A-l(2)).^2)./(l(1)*l(3))).^(l(1)+1));
j=log(f);
k=sum(j.');
w=0-k;
其是A是数据.
然后我在命令窗口输入
y=fminsearch('myfun',[10 10 10 10],optimset('MaxFunEvals',1e10,'MaxIter',1e5))
运行结果为:
??? Operation terminated by user during ==> myfun after 10
In ==> fminsearch at 376
                    x(:) = v(:,j); fv(:,j) = funfcn(x,varargin{:});

请教高手,这是怎么回事呢?


急啊,谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-4-6 08:07:35
%myfun is parameterized,修改为

function w=myfun(l,A)
%global A
c=(2^((1-l(1))*0.5))/(gamma(l(1)*0.5)*(pi*l(1))^(0.5)*l(3)^(0.5));
....
w=0-k;

%在命令窗口输入
y=fminsearch(@(l) myfun(l,A),[10 10 10 10],optimset('MaxFunEvals',1e10,'MaxIter',1e5))

fminsearch may only give local solutions
所以多试一些 starting point
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-4-6 08:42:46
考虑下用遗传算法或者模拟退火算法
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-4-6 16:22:42
谢谢,已经解决好了,谢谢各位了哈!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-4-12 11:14:47
请问你的该程序调试出来没有,我也有相似的错误!能将调试成功的也贴出来看看? 1# pzpenny
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-5-4 21:02:18
我正在研究你的程序,因为我根本看不懂,争取有一天我也能给大家解决点问题,努力中!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群