[英]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向量。
histc
是x
給出的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.