下記はその確認用の matlab プログラム。
大きさ 1 を持つ N x 4 個の複素数の乱数 x を生成する。
実部・虚部それぞれが標準正規分布している。
また、4 列の列方向の乱数列どうしはそれぞれ独立である。
相関行列 corrcoef(x) の i,j 成分が対角成分以外ほぼ 0 になることから確認できる。
複素相関行列 R のコレスキー分解 chol(R) の下三角行列を x に乗算して、
相関のある乱数列 y を得ることができる。
y の相関行列 corrcoef(y) を計算すると、もとの R とほぼ等しくなっている。
N = 10000; x = 1/sqrt(2) * (randn(N,4) + randn(N,4) * I); corrcoef(x) # correlation matrix of y r = [ 1, -0.7+0.2I, 0.2+0.4I, -0.5+0.1I; -0.7-0.2I, 1, 0.3-0.2I, 0.4-0.2I; 0.2-0.4I, 0.3+0.2I, 1, 0.3+0.1I; -0.5-0.1I, 0.4+0.2I, 0.3-0.1I, 1] y = transpose(chol(r, 'lower') * transpose(x)); corrcoef(y) # correlation matrix of y