三参数matlab威布尔分布,这是三参数威布尔分布参数估计的程序,但不知道怎么把寿命数据写入…

三参数matlab威布尔分布,这是三参数威布尔分布参数估计的程序,但不知道怎么把寿命数据写入…x 3956 42 4004 18 4091 61 4355 05 4355 40 4376 01 4391 79 4487 68 4487 68 4736 67 4736 67 4939 85 4963 62 5220 19 5353 41 5372 72 5418 04 5444 11 5603 17 5698 10 5746 17 5843 52 6175 14 6197 41 6249

x=[3956.42,4004.18,4091.61,4355.05,4355.40,4376.01,4391.79,4487.68,4487.68,4736.67,4736.67,4939.85,4963.62,5220.19,5353.41,5372.72,5418.04,5444.11,5603.17,5698.10,5746.17,5843.52,6175.14,6197.41,6249.69,6279.76,6279.76,6572.74,6740.48,6887.65,7183.09,7209,7209,7209,7209,7366.4,7581.64,7581.64,7581.64,7645.59,8246,8599.7,8713.97,8936.34,9044.22,9197.45,9511.73,9754.47,9967.45,10136.31,10172.88,10172.88,10308.04,10395,10609.23,10609.23,10788.97,10879.97,10971.75,11594.41,11990.59,12237.31,12400.31,12400.31,12550.01,13198.73,13947.78,15557.12,17646.12,19848.23,23199.07];

不知道怎么用下面的程序把上面的寿命数据按照三参数威布尔分布模型,把三个参数估计出来,一个MATLAB小白,希望路过的大神帮帮忙

x12 = handles.yb(:,1);

% x13 = x12;

n1=size(x12);%查看读取的excel数据矩阵的行*列数

n=sort(x12);%数组元素从小到大排列

m = size(n);%查看排列之后的行列数

n22=n1(1);%行数  此处就是样本个数

n2 = single(n22);%将行数值装换成单精度

clear n22 n1;

x1 = single(x12);%将这组数据装换成单精度

x1=sort(x1);  %从小到大排列

zd=x1(1,1) ;       %选出这一组数里面最小的数,这里就是第一个

clear x12;

for i =1:n2

%     y(i) = (i-0.35)/n2;

y(i) = (i/(n2-i+1))/((i/(n2-i+1))+finv(0.05,2*(n2-i+1),2*i));

end

y1 = y’;%y1为分布函数

clear y;

y = single(y1);%y为分布函数

clear y1;

Y1=log(-log(1-y));%Y1为纵坐标

clear y;

z1=sum(Y1);%求和

syms  x;

X1 = log(x1-x);%x值为伽马值

s3=sum(X1);%求和

s4=z1;%Y1的和值赋值给s4

s5=(s4-n2*Y1)./(x1-x);

s5=sum(s5);

s1=sum(X1.^2);

s2=sum(Y1.*X1);

s6=(s3-n2*X1)./(x1-x);

s6=sum(s6);

f=(n2*s1-s3^2)*s5-(n2*s2-s3*s4)*s6;

r= HalfInterval(f,0,zd);         %此处取样本中的最小值,但是这里可能是精度问题,得稍大一点才能出来(20样本不对,50样本对)

set(handles.edit38,’string’,num2str(r));%位置参数

x=log(x1-r);

y=Y1;

[a,b] = LZXEC (x,y);

a=real(a);

b=real(b);

b=nthroot(exp(-b),a);

set(handles.edit39,’string’,num2str(a));%形状参数

set(handles.edit40,’string’,num2str(b));%尺度参数

p1=1-exp(-((n-r)./b).^a);

[B,BINT,R,RINT,STATS] = regress(p1,[ones(size(n’));n’]’);

set(handles.edit37,’string’,num2str(STATS(1)));

% xda1=81.7458:0.001:(n(m)+20);

%  xda1=str2num(r):0.001:(n(m)+20);

xda1=r:0.001:(n(end)+20);

% x = size(xda1)

yda1 = 1-exp(-((xda1-r)./b).^a);

% y = size(yda1)

plot( handles.axes1,n,p1,’p’,xda1,yda1,’b’,’linewidth’,1,’markersize’,4);

legend(handles.axes1,’数据点’,’概率分布曲线’,’location’,’SouthEast’);

hold on

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228789.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午6:11
下一篇 2026年3月16日 下午6:12


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号