產生一個協方差矩陣為R的n維隨機正態分布的一組樣本,matlab沒有現成的函數,不過我們可以通過一個線性變換來實現。
我們知道,matlab產生的n維正態樣本中的每個分量都是相互獨立的,或者說,它的協方差矩陣是一個數量矩陣mI,如:X = randn(10000,4);產生10000個4維分布的正態分布樣本,協方差矩陣就是單位矩陣I。
定理 n維隨機變量X服從正態分布N(u,B),若m維隨機變量Y是X的線性變換,即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;