概述
背景
关于威布尔分布的介绍和最小二乘法拟合方法已在此博客介绍,此处不再赘述。
Matlab代码
使用方法为
[威布尔参数beta,威布尔参数eta]=Weibullfit(样本数组s,样本个数n)
%Project: 威布尔分布拟合/威布尔参数估计函数
%Author: Jace
%Data: 2022/3/4
%====================原理====================
%s为威布尔分布的自变量,F(s)为威布尔分布的因变量:
%F(s)=1-exp(-(s/eta)^beta)
%将威布尔分布化为线性,假设
%x=log(s)
%y=log(log(1/1-F(s)))
%将s按大小顺序排列后,得
%F(s)=i/n+0.1
%n为样本总数
%====================函数====================
function [beta,eta]=Weibullfit(s,n)
%初始化
x_Sum=0;
y_Sum=0;
xy_Sum=0;
xx_Sum=0;
%求平均值和累计和
for i=1:n%求样本累积和
x_Sum=x_Sum+log(s(i));
y_Sum=y_Sum+log(log(1/(1-(i/(n+0.1)))));
xy_Sum=xy_Sum+log(s(i))*log(log(1/(1-(i/(n+0.1)))));
xx_Sum=xx_Sum+log(s(i))^2;
end
%估计分布参数
beta=(n*xy_Sum-x_Sum*y_Sum)/(n*xx_Sum-(x_Sum^2));
eta=exp((x_Sum/n)-(y_Sum/n)/beta);
end
测试用例
%Project: 威布尔分布拟合测试函数
%Author: Jace
%Data: 2022/3/4
clear all;
close all;
N=100;%样本总数
%--------威布尔分布参数----------
eta=1;
beta=3;
X=wblrnd(eta,beta,N,1);%生成威布尔分布样本
Xs=sort(X);%排序
%---------初始化----------
F=zeros(1,41);
Q=zeros(1,N);
%---------拟合估计参数----------
% [WG]=wblfit(X,N);%matlab自带最大似然估计法拟合,估计参数
[Wbeta,Weta]=Weibullfit(Xs,N);
%---------生成横纵坐标以用于绘制分布图像----------
for t=1:N
Q(t)=t/(N+1);
end
for k=1:41
i=(k-1)/10;
F(k)=Weibull(i,Wbeta,Weta);
end
%---------绘图----------
i=1:N;
j=1:40;
figure
hold on; box on;
plot(Xs(i),Q(i),'b.');
plot(j/10,F(j),'-r.');
legend('Sample','Weibull');
其中依赖的Weibull函数为,需添加在同路径为Weibull.m
%Project: 威布尔函数
%Author: Jace
%Data: 2022/3/4
function [F]=Weibull(s,bata,eta)
F=1-exp(-(s/eta)^bata);
end
效果
蓝色点为样本点,红色曲线为拟合威布尔分布曲线
最后
以上就是忧伤红酒为你收集整理的威布尔分布拟合/威布尔参数估计Matlab函数背景Matlab代码测试用例效果的全部内容,希望文章能够帮你解决威布尔分布拟合/威布尔参数估计Matlab函数背景Matlab代码测试用例效果所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复