我是靠谱客的博主 忧伤红酒,最近开发中收集的这篇文章主要介绍威布尔分布拟合/威布尔参数估计Matlab函数背景Matlab代码测试用例效果,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

背景

关于威布尔分布的介绍和最小二乘法拟合方法已在此博客介绍,此处不再赘述。

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代码测试用例效果所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部