绘制对数正态分布

Plotting lognormal distribution

这是概率密度函数:

代码:

f=exp(-(((log(x)-log(100)-(.1((.15)^2)/2))^2))/(2*.15^2))/(x(.15)*sqrt(2*pi));

plot(f);

我似乎无法在 Matlab 中绘制这个对数正态分布。我试图找出此图的百分比高于 100,但不知道如何在代码中执行该步骤。

也许您想给 x 一些值并将 f(x) 定义为匿名函数

f=@(x) exp(-(((log(x)-log(100)-(.1.*((.15).^2)./2)).^2))./(2*.15^2))./(x*.15*sqrt(2*pi));

x = 50:150
plot(x, f(x))

编辑:x>=100 的密度函数面积:

>> quad(f,100,Inf)
ans =  0.50299

MATLAB 使用 makedist(), pdf(), and cdf() 函数使这个过程变得更加简单**。

在下面的示例中,25 以上的面积为 0.0638 (6.38%)。

pd = makedist('Lognormal',2,.8);     % Create Lognormal probability distribution object

X = (0:.01:50)';
figure, hold on, box on
p = plot(X,pdf(pd,X),'b-','DisplayName','A')      % Uses `pdf` function on the object
%legend('show')
title('Lognormal Distribution (\mu = 2, \sigma = 0.8)')
set(p,'LineWidth',2.0)

% Percent above 25
1-cdf(pd,25)        % = 0.0638    % Uses `cdf` function on the object

** MATLAB 2013a 中引入的概率分布对象。