用MATLAB创建高斯随机变量X.

时间:2012-10-27 13:05:14

标签: matlab statistics

通过使用randn函数,我想创建一个高斯随机变量X,使其X ~ N(2,4)并将此模拟PDF与理论曲线一起绘制。

4 个答案:

答案 0 :(得分:7)

Matlab randn从正态分布生成实现,其均值为零,标准差为1。 来自任何其他正态分布的样本可以简单地通过以下方式生成:

numSamples = 1000;
mu = 2;
sigma = 4;
samples = mu + sigma.*randn(numSamples, 1);

您可以通过绘制直方图来验证这一点:

figure;hist(samples(:));

请参阅matlab help

答案 1 :(得分:3)

N = 1000;
x = [-20:20];
samples = 2 + 4*randn(N, 1);
ySamples = histc(samples,x) / N;
yTheoretical = pdf('norm', x, 2, 4);
plot(x, yTheoretical, x, ySamples)

randn(N, 1)创建一个N - by-1向量。

histcx中给出的区间的直方图计数 - 您可以使用hist立即绘制结果,但我们要将其除以N。< / p>

pdf包含许多有用的PDF,正常只是一个例子。

答案 2 :(得分:0)

记住这一点:X~N(均值,方差)

matlab中的randn产生具有零均值和单位方差的正态分布随机变量W. 要将均值和方差更改为随机变量X(使用自定义均值和方差),请遵循以下等式: X = mean + standard_deviation * W. 请注意,standard_deviation是方差的平方根。

N = 1000;
x = [-20:20];
samples = 2 + sqrt(4)*randn(N, 1);
ySamples = histc(samples,x) / N;
yTheoretical = pdf('norm', x, 2, sqrt(4)); %put std_deviation not variance
plot(x, yTheoretical, x, ySamples)

答案 3 :(得分:0)

使用一行代码来实现这一目标的一种快速简便的方法是使用:

mu = 2;
sigma = 2;
samples = normrnd(mu,sigma,M,N);

这将生成一个 MxN 矩阵,该矩阵从N(μ,?)(在这种情况下为= N(2,2))中采样。 有关更多信息,请参见normrnd