1
爲這個愚蠢的問題道歉,數學不是我的強項。我試圖在matlab中設計一個函數,根據d維中的正態分佈N(mu,sigma)生成樣本。這是我的代碼到目前爲止,matlab中的正態分佈函數
mu = [1 2];
Sigma = [1 .5; .5 2]; R = chol(Sigma);
z = repmat(mu,100,1) + randn(100,2)*R;
我發現這個從通過各種維基百科和谷歌的文章讀,不知道是否是正確的?在此先感謝,
生鏽
謝謝!另外,我還有一個類似的問題,使用randn()像我上面或mvnrnd(MU,SIGMA)生成正常樣本,mvnrnd用於大於2的維度有什麼區別? – rusty009
'randn'不是準確的多變量,它只是在每個維度上獨立生成正常數字。你不能強制協變。 'mvnrnd'用於從適當的多變量正態分佈生成樣本。 – Ansari
正如Ansari指出的那樣,randn既是多變量又是單變量,儘管如果你有一個身份協方差矩陣,那麼維數是獨立的。像你一樣使用randn是一個完全有效的方法來生成具有給定協方差矩陣和平均值的樣本,但mvnrnd爲您提供了任何參數集的一般情況。您發現的方法完全適用於更多維數。 – 2012-05-24 18:09:18