What is the best way to generate samples from a multivariate complex normal distribution with an arbitrary covariance matrix?
12 views (last 30 days)
Show older comments
Is there a simple way to generate samples from X ~ CN(0,R), where X is Mx1 and R can be chosen arbitrarily?
1 Comment
Answers (2)
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);
2 Comments
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.]
2 Comments
wenhao chen
on 21 Apr 2017
The answer is good for the condition when M = 1,but for M > 1,we need to find other way!
Pratish Dwivedi
on 9 Jul 2019
I don't get what you meant by taking the first component as real and second as complex.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!