How to fastly generate a series of complex Gaussian vectors under given covariance matrix Q ?

11 views (last 30 days)
I have a covariance matrix Q, which is complex positive semidefinite and its dimension is . Now i want to generate L column vectors (with the same distribution),where . Then store it in , which is a matrix.
How to fastly obtain this H?

Answers (1)

Ayush Aniket
Ayush Aniket on 18 Dec 2024
One of the ways you can generate the H matrix is by using the Cholesky decomposition to transform standard normal random vectors into vectors with the desired covariance structure.
You can use the chol MATLAB function to decompose the covariance matrix Q. Since Q is positive semidefinite, you can use a modified Cholesky factorization that handles complex matrices. The final step is to create a matrix of standard normal random variables and multiply them by the Cholesky factor to obtain the desired vectors. Refer the code below:
% Cholesky decomposition of Q
% Use 'chol' with 'lower' option to get the lower triangular matrix
A = chol(Q, 'lower');
% Generate L standard normal vectors of dimension N
Z = (randn(N, L) + 1i*randn(N, L)) / sqrt(2); % Complex standard normal
% Transform to obtain the desired distribution
H = A * Z;
Refer to the following documentation to read about chol function: https://www.mathworks.com/help/matlab/ref/chol.html#mw_ffc71c97-36a0-4335-8e05-82ecff3e6312

Categories

Find more on Random Number Generation in Help Center and File Exchange

Products


Release

R2024a

Community Treasure Hunt

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

Start Hunting!