matlab生成指定均值向量和協方差矩陣的多維正態分布樣本


產生一個協方差矩陣為R的n維隨機正態分布的一組樣本,matlab沒有現成的函數,不過我們可以通過一個線性變換來實現。

我們知道,matlab產生的n維正態樣本中的每個分量都是相互獨立的,或者說,它的協方差矩陣是一個數量矩陣mI,如:X = randn(10000,4);產生10000個4維分布的正態分布樣本,協方差矩陣就是單位矩陣I

定理 n維隨機變量X服從正態分布N(u,B),若m維隨機變量YX的線性變換,即Y=XC,其中C是n×m階矩陣,則Y服從m維正態分布N(uC,C'BC)。

根據這條定理,我們可以通過一個線性變換C把協方差矩陣為I的n維正態樣本變為協方差矩陣為C'C的n維正態樣本。如果我們要產生協方差矩陣為R的n維正態樣本,由於R為對稱正定矩陣,所以有Cholesky分解: R=C'C

附:matlab程序

function Y = multivrandn(u,R,M)
% this function draws M samples from N(u,R)
% where u is the mean vector(row) and R is the covariance matrix which must be positive definite

n = length(u);             % get the dimension
C = chol(R);               % perform cholesky decomp R = C'C
X = randn(M,n);            % draw M samples from N(0,I)

Y = X*C + ones(M,1)*u;

 

 

產生指定均值向量和協方差矩陣的多維正態分布樣本

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM