Matlab中特定范围内的对数正态随机数 [英] Lognormal random numbers in specific range in Matlab

查看:407
本文介绍了Matlab中特定范围内的对数正态随机数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想开发一个范围为[0.42,1.19]的对数正态分布,其很少的元素指定为D=[1.19,1.00,0.84,0.71,0.59,0.50,0.42].平均值应为0.84,标准偏差应尽可能小.还给出了90%的cdf(= 90%的晶粒)位于0.59 and 1.19之间.

I want to develop a lognormal distribution with range [0.42,1.19], whose few elements are given as D=[1.19,1.00,0.84,0.71,0.59,0.50,0.42]. The mean should be 0.84 and standard deviation as small as possible. Also given is that the 90% of cdf (=90% of the grains) lies between 0.59 and 1.19.

一旦我知道了包含给定条件的对数正态分布的所有元素,便可以找到它的pdf,这是我所需要的.这是我尝试过的简单步骤:

Once I know all the elements of this lognormal distribution which incorporate the given conditions I can find its pdf, which is what I require. Here are simple steps I tried:

D=[1.19,1.00,0.84,0.71,0.59,0.50,0.42];

s=0.30; % std dev of the lognormal distribution

m=0.84; % mean of the lognormal distribution

mu=log(m^2/sqrt(s^2+m^2)); % mean of the associated normal dist.

sigma=sqrt(log((s^2/m^2)+1)); % std dev of the associated normal dist.

[r,c]=size(D);

for i=1:c

D_normal(i)=mu+(sigma.*randn(1));

w(i)=(D_normal(i)-mu)/sigma; % the probability or the wt. percentage

end

sizes=exp(D_normal);

推荐答案

如果您有统计信息工具箱,并且希望从对数正态分布中绘制随机值,则可以简单地调用

If you have the statistics toolbox and you want to draw random values from the lognormal distribution, you can simply call LOGNRND. If you want to know the density of the lognormal distribution with a given mean and sigma at a specific value, you use LOGNPDF.

由于您正在计算重量,因此您可能正在寻找密度.在您的示例中为:

Since you're calculating weights, you may be looking for the density. These would be, in your example:

weights = lognpdf([1.19,1.00,0.84,0.71,0.59,0.50,0.42],0.84,0.3)

weights =
     0.095039     0.026385     0.005212   0.00079218   6.9197e-05   5.6697e-06   2.9244e-07

编辑

如果您想知道什么百分比的谷物落在0.59到1.19的范围内,请使用

If you want to know what percentage of grains falls into the range of 0.59 to 1.19, you use LOGNCDF:

100*diff(logncdf([0.59,1.19],0.84,0.3))
ans =
       1.3202

不是很多.如果绘制分布图,您会发现对数值的对数正态分布峰值略高于2

That's not a lot. If you plot the distribution, you'll notice that the lognormal distribution with your values peaks a bit above 2

x = 0:0.01:10;
figure
plot(x,lognpdf(x,0.84,0.3))

这篇关于Matlab中特定范围内的对数正态随机数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆