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

背景

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

Matlab代码

使用方法为
[威布尔参数beta,威布尔参数eta]=Weibullfit(样本数组s,样本个数n)

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
%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

测试用例

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
%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

复制代码
1
2
3
4
5
6
7
%Project: 威布尔函数 %Author: Jace %Data: 2022/3/4 function [F]=Weibull(s,bata,eta) F=1-exp(-(s/eta)^bata); end

效果

在这里插入图片描述
蓝色点为样本点,红色曲线为拟合威布尔分布曲线

最后

以上就是忧伤红酒最近收集整理的关于威布尔分布拟合/威布尔参数估计Matlab函数背景Matlab代码测试用例效果的全部内容,更多相关威布尔分布拟合/威布尔参数估计Matlab函数背景Matlab代码测试用例效果内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部