|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
我有一些数据,用ksdensity画出这些数据的概率分布图,然后用带有双参数的函数{a/b*(abs(x).^(a-1)).*exp(-abs(x).^a/b)}进行曲线拟合,想求出两个参数值a,b。但问题是拟合后的图像如下图所示:
其中,黑色的线是数据的概率分布曲线,红线是函数的拟合曲线,效果非常不好。。请问,有什么办法解决呢?程序如下:
clear;clc
Yres=load('H:\DctResidual.txt');
[Y,xi]=ksdensity(Yres(:));
a0=[1 1];
options=optimset('fminsearch');
options.TolX=0.000001; % 控制被估参数的迭代精度
options.Display='off'; % 避免显示收敛信息
a=fminsearch(@funcexps,a0,options,xi,Y); % 计算二乘残差最小时的参数估计
y_est=a(1)/a(2)*(abs(xi).^(a(1)-1)).*exp(-(abs(xi).^a(1))/a(2));%Weibull分布
figure,plot(xi,Y,'.k',xi,y_est,'-r')
funcexps函数如下:
function E=funcexps(a,x,y)
x=x(:);
y=y(:);
Y=a(1)/a(2)*(abs(x).^(a(1)-1)).*exp(-(abs(x).^a(1))/a(2)); %韦布尔分布
E=sum((y-Y).^2); % 二乘残差
数据文件:
DctResidual.txt
(89.02 KB, 下载次数: 6)
[ 本帖最后由 maigicku 于 2010-4-13 16:07 编辑 ] |
|