如何在Matlab中绘制这种平滑的概率分布?

时间:2011-04-12 15:12:39

标签: matlab plot distribution probability

enter image description here

2 个答案:

答案 0 :(得分:1)

如果您有PDF的等式,您可以简单地将其绘制为指定的x值。例如,

正态分布

pNormal=@(x)1/sqrt(2*pi)*exp(-(x.^2)/2);
x=linspace(-4,4,1e3);
plot(x,pNormal(x));

日志 - 正态分发

pLogNormal=@(mu,sigma,x)1./(x*sigma*sqrt(2*pi)).*exp(-((log(x)-mu)./(sqrt(2)*sigma)).^2);
x=linspace(0,10,1e3);
mu=0;sigma=1;
plot(x,pLogNormal(mu,sigma,x));

您可以根据需要改变sigmamux。对数正态分布是为x>0定义的。

答案 1 :(得分:1)

这是一个使用内核平滑器的示例。 (以防您不知道哪种分布描述了您的数据样本)

% generate some random data
X1 = 10 + randn(100,1);
X2 = 15 + 2*randn(75,1);
X3 = 25 + 3*randn(125,1);
X = vertcat(X1,X2,X3);

% use a kernel smoother to model X
foo = fitdist(X,'kernel')

% inspect the methods of foo
methods(foo)

% Plot the pdf of foo
range = linspace(min(X), max(X), 100);
bar = pdf(foo, range)
plot(range, bar)