2

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

4

4 回答 4

7

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

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

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

figure;hist(samples(:));

请参阅matlab 帮助

于 2012-10-27T14:44:36.593 回答
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×1 向量。

histc是按给出的 bin 的直方图计数x- 您可以使用它hist来立即绘制结果,但在这里我们想将它除以N.

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

于 2012-10-27T14:46:29.987 回答
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)
于 2013-12-13T16:09:24.640 回答
0

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

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

这将生成一个MxN矩阵,从N(μ,), (= N(2,2)在这种特殊情况下)采样。有关其他信息,请参阅normrnd

于 2019-07-08T12:17:37.793 回答