首页 > 编程知识 正文

对数正态分布,对数正态分布 matlab

时间:2023-05-06 13:56:40 阅读:209858 作者:141

对LHS介绍的可以参考:https://blog.csdn.net/Together_CZ/article/details/90076271
下面是4种分布的matlab程序,包含正态分布,均匀分布, 对数正态分布,extreme type 1。
1.对正态(超级的小海豚)分布的变量进行拉丁超立方采样
参考:https://blog.csdn.net/chichuhe/article/details/89890720#commentsedit
原文还有均匀分布的LHS采样程序。

% 对正态(超级的小海豚)分布的变量进行拉丁超立方采样% 效果不好,可以多运行几次clc;clear;close all%设置均值和方差,采样点数Mu=[3.6e7;3.6e7]; %均值Sigma=[3.6e6,3.6e6]; %方差N = 30; % 样本点数目D = size(Mu,1); % 维数Covariance_Matrix = zeros(D,D);for i = 1:D Covariance_Matrix(i,i) = Sigma(i)^2;end UB = Mu + 3*Sigma;LB = Mu - 3*Sigma; % 取值范围 X = lhsnorm(Mu, Covariance_Matrix, N);% X = lhsnorm(Mu, Sigma, N);figure(1)plot(X(:,1),X(:,2),'*');grid ontitle('正态分布的LHS采样')

2.对数正态分布的LHS采样

clc;close all; clearvars;% 对数正态分布的参数设置 m=20;dist=[3,3];mu=[3.6e7,1.98e8];sigma=[3.6e6,9.9e6];lowb=[mu-3*sigma];upb=[mu+3*sigma];n=length(mu);if length(dist)~=n|length(sigma)~=n|length(lowb)~=n|length(upb)~=n error('dist,mu,sigma,lowb,upb must have the same length');endrvcom=[];for j=1:n rv=[];if dist(j)==3 %对数正态分布 p_low(j)=logncdf(lowb(j),mu(j),sigma(j)); p_up(j)=logncdf(upb(j),mu(j),sigma(j)); p_bound(j)=p_up(j)-p_low(j); p_subbound(j)=p_bound(j)./(m-1); for i=0:m-1 rv=[rv;logninv(p_low(j)+i.*p_subbound(j),mu(j),sigma(j))]; endelseif dist(j)==4 %for extreme type 1 p_low(j)=evcdf(lowb(j),mu(j),sigma(j)); p_up(j)=evcdf(upb(j),mu(j),sigma(j)); p_bound(j)=p_up(j)-p_low(j); p_subbound(j)=p_bound(j)./(m-1); for i=0:m-1 rv=[rv;evinv(p_low(j)+i.*p_subbound(j),mu(j),sigma(j))]; endendrvcom=[rvcom rv];endS=[];for i=1:n S=[S randsample(rvcom(:,i),m)];endif n==2 figure plot(S(:,1),S(:,2),'r*');grid on title('对数正态分布的LHS采样')elseif n==3 figure plot3(S(:,1),S(:,2),S(:,3),'lc.');grid onend

将上述程序中的distvia变量参数改为4即是extreme type 1分布的LHS采样。
有问题欢迎交流哈~

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。