MATLAB实现拉丁超立方模拟?
发布网友
发布时间:2022-04-22 18:36
我来回答
共5个回答
热心网友
时间:2023-06-25 17:51
以上的回答都太复杂了,其中那个自己编MATLAB程序的,我看了看分布并不理想。建议楼主直接调用MATLAB里的lhsdesign函数进行抽样。以下是我举得一个例子:
%用lhsdesign(20,2)来生成20行2列的的矩阵,2列分别20个0~1之间的均匀样本点,你试试下面代码:
A=lhsdesign(20,2);
x1=A(:,1)*100;
x2=A(:,2)*110+20;
scatter(x1,x2,50,'filled')
热心网友
时间:2023-06-25 17:51
N=10;
UB=100;LB=-100;
D=2;
i=1;
for i=1:D
S(:, i) = ((randperm(N) -1 + rand(1, N)))' / N;
end
S=S*(UB-LB)+LB;
figure(6)
plot(S(:,1),S(:,2),'.')
以上是简单的拉丁超立法采样模拟,不为别的,就希望有人能看到,有批评指正就更好了
热心网友
时间:2023-06-25 17:52
function S=LHS(m,dist,mu,sigma,lowb,upb)
%code of Latin Hypercube Sampling%
%call S=lhs(m,dist,mu,sigma,lowb,upb)
%
%Input argument
%m: a scalar,the number of sample points
%dist: A row with distribution type flags of basic random variables;the
%value of the flag can be 1 (for uniform distribution, 2(for normal distribution), 3(for lognormal)
%and 4(for extreme type 1).
%mu: A row vector comprising the mean value of basic random variables.
%sigma: A row vector with its length equaligng to mu,including the standard
%deviation of basic random variables.
%lowb: a row vector with its elements are the lower bound of the sampling
%interval
%upb:a row vector with its elements are the upper bounds of the sampling
%interval
%dist,mu,sigma,lowb,upb must have the same length.
%Output argument
%S: sampling point matrix, of which each row is a sampling point.
%
%last update june 13, 2009
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');
end
rvcom=[];
for j=1:n
rv=[];
if dist(j)==1
p_low(j)=unifcdf(lowb(j),lowb(j),upb(j));
p_up(j)=unifcdf(upb(j),lowb(j),upb(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;unifinv(p_low(j)+i.*p_subbound(j),lowb(j),upb(j))];
end
elseif dist(j)==2
p_low(j)=normcdf(lowb(j),mu(j),sigma(j));
p_up(j)=normcdf(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;norminv(p_low(j)+i.*p_subbound(j),mu(j),sigma(j))];
end
elseif 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))];
end
elseif dist(j)==4
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=O:m-1
rv=[rv;evinv(p_low(j)+i.*p_subbound(j),mu(j),sigma(j))];
end
end
rvcom=[rvcom rv];
end
S=[];
for i=1:n
S=[S randsample(rvcom(:,i),m)];
end
if n==2
figure
plot(S(:,1),S(:,2),'k.');
elseif n==3
figure
plot3(S(:,1),S(:,2),S(:,3),'lc.');
end
热心网友
时间:2023-06-25 17:52
先说二维的举例,*你类推。
如你要在x,y两个变量中选k个点,先按概率分其区间为k分(或其他方法),选每一份的中点作为样本点,然后此时你有(x1,x2,…,xk),(y1,y2,…,yk),这时你在将他们两个随机组合(可以用randperm)。
热心网友
时间:2023-06-25 17:53
这中东西貌似大侠都不会说的,要自己去研究哦~
MATLAB怎么实现拉丁超立方模拟?
i) = ((randperm(N) -1 + rand(1, N)))/ N;\x0d\x0aend\x0d\x0aS=S*(UB-LB)+LB;\x0d\x0afigure(6)\x0d\x0aplot(S(:,1),S(:,2),'.')\x0d\x0a以上是简单的拉丁超立法采样模拟,不
V2X实训实验
一、千智道介绍千智道成立于2013年,专注于无人驾驶、人工餐能领域的科研、实训、科普展示综合解决方案,基于沉浸式、沙盘式、室外道路等多种实验场景之上构建智慧路网系统,实现智能网联车无人驾驶、V2X运行实验、配套网联信号机、RSU路测设备...
MATLAB怎么实现拉丁超立方模拟?
N=10;UB=100;LB=-100;D=2;i=1;for i=1:D S(:, i) = ((randperm(N) -1 + rand(1, N)))' / N;end S=S*(UB-LB)+LB;figure(6)plot(S(:,1),S(:,2),'.')以上是简单的拉丁超立法采样模拟,不为别的,就希望有人能看到,有批评指正就更好了 ...
MATLAB实现拉丁超立方模拟?
x2=A(:,2)*110+20;scatter(x1,x2,50,'filled')
拉丁超立方采样LHS实例——对服从威布尔/韦伯Weibull分布的样本进行拉丁...
在上一篇文章《拉丁超立方采样(LHS)与蒙特卡洛模拟入门》中,我们未尽的讨论继续进行,本次将介绍如何使用拉丁超立方采样技术对服从威布尔/韦伯分布的样本进行抽样。这部分内容主要涉及概率分布和累积概率分布等统计学基础知识。威布尔分布有两个参数,其概率密度函数(PDF)公式为[公式]。以参数[公式]的威布尔...
如何进行拉丁超立方抽样?有软件或者具体步骤是什么?
matlab中lhsdesign函数,和python的第三库mcerp都是拉丁超立方抽样的实现函数
拉丁超立方采样(Latin hypercube sampling, LHS)及蒙特卡洛模拟简介
我们曾通过40次采样(对比传统随机方法的大量次数)验证了这一方法的威力,它在处理复杂场景时,效率得到了显著提升,如Matlab中的lhsdesign和lhsnorm函数就是这种智慧的体现。当拉丁超立方与正态分布携手,便诞生了"基于拉丁超立方的蒙特卡洛模拟"这一高级工具。这个结合的智慧,使得在各种分布的处理上更加得...
MATLAB语言在环境工程中主要的应用范围和发展趋势
在大气颗粒物源类型解析的基础上对源的空间解析提出了求解方法.关键字:Matlab开放式平台 Kowm 蒙特卡洛模拟 江苏省 污染物 环境行为 计算机模拟 环境信息 求解方法 空间解析 类型 大气颗粒物源 探索性研究 迁移 越境 蒙特卡洛模拟 因子模型 代入 随机数据 简单随机抽样 拉丁超立方抽样 边界值 有机质含量...
如何利用matlab生成拉丁超立方采样
如何利用matlab生成拉丁超立方采样 N=10;UB=100;LB=-100;D=2;i=1;for i=1:D S(:, i) = ((randperm(N) -1 + rand(1, N)))' / N;end S=S*(UB-LB)+LB;figure(6)plot(S(:,1),S(:,2),'.')