簡體   English   中英

用MATLAB創建高斯隨機變量

[英]Creating Gaussian random variable with MATLAB

通過使用randn函數,我想創建一個高斯隨機變量X ,使得X ~ N(2,4)並將該模擬PDF與理論曲線一起繪制。

Matlab randn從正態分布生成實現,其randn為零,標准差為1.可以通過以下方式簡單地生成來自任何其他正態分布的樣本:

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

您可以通過繪制直方圖來驗證這一點:

figure;hist(samples(:));

請參閱matlab幫助

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給出的bin的直方圖計數 - 你可以使用hist來立即繪制結果,但是在這里我們要將它除以N

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

記住這個: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)

使用一行代碼實現此目的的快速簡便方法是使用:

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

這將生成從N(μ,𝜎)采樣的M × N(μ,𝜎)矩陣, = N(2,2)在該特定情況下= N(2,2) )。 有關其他信息,請參閱normrnd

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM