What is the best way to generate samples from a multivariate complex normal distribution with an arbitrary covariance matrix?

12 views (last 30 days)
Is there a simple way to generate samples from X ~ CN(0,R), where X is Mx1 and R can be chosen arbitrarily?

Answers (2)

Bruno Luong
Bruno Luong on 9 Jul 2019
Edited: Bruno Luong on 9 Jul 2019
% Generate test complex covariance matrix R sdp (m x m)
m = 3;
A = randn(m)+1i*randn(m);
R = A'*A
% Generate x, n-samples of complex normal random vector
% (in R^m) that have R as covariance matrix
n = 10000;
L = chol(R)
x = L'*(randn(m,n)+1i*randn(m,n))/sqrt(2);

the cyclist
the cyclist on 27 Jul 2011
Do you have the Statistics Toolbox? If so, you can generate a 2-d vector using mvnrnd(), and take the first component as the real part, and second component as the imaginary part.
[Disclaimer: I just read about the complex normal distribution on Wikipedia, and I think what I said is accurate, but you might want to check.]

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!