I Implementation of Correlated Gaussian Random Fields Model

AI Thread Summary
The discussion centers on implementing a correlated Gaussian random fields model for an optimization problem involving uncertainty. The original poster seeks guidance on practical implementation after reviewing a relevant research paper. A response provides a standard method for generating correlated random variables using a covariance matrix and mean vector, along with a sample Matlab code snippet. The responder emphasizes the importance of verifying the mathematical formulas used in the implementation. Overall, the thread highlights the need for practical examples and verification in applying theoretical models.
confused_engineer
Messages
34
Reaction score
1
TL;DR Summary
I have recently found an article with a useful algorithm. However, I don't understand it very well; thus, I would like to know if it is already implemented
Hello everyone. I have been recently working in an optimization model in the presence of uncertainty. I have read https://www.researchgate.net/publication/310742108_Efficient_Simulation_of_Stationary_Multivariate_Gaussian_Random_Fields_with_Given_Cross-Covariance in which, a methodology for generating correlated gaussian random fields. Unfortunately, I have no idea on how to implement it.

I was wondering if someone has seen an implementation of this methodology or knows where I can find one.

Best regards.
Confused engineer.
 
Physics news on Phys.org
What exactly are you trying to do?

Here is a standard way that works as long as you don't have too many variables to fit in your computer. Let ##N## correlated random variables arranged in a vector ##\mathbf{x}##, with mean ##\mathbf{m} = E[\mathbf{x}]## and covariance matrix ##\mathbf{K} = E\left[ \left(\mathbf{x}-\mathbf{m}\right)\left(\mathbf{x}-\mathbf{m}\right)^T\right]##. One realization of this, ##\mathbf{x}_i##, can be generated by starting with a vector ##\mathbf{y}_i## that contains independent, unit-variance, zero-mean Gaussian random numbers. Below is Matlab code to show how it can be done. Please do the math and verify that you believe the formula I am using is correct - doing such calculations is how you learn this stuff.

Matlab:
% code assumes you have already defined K as an NxN covariance matrix
% and m as an Nx1 vector
N = 100;
yi = randn(N,1); % unit-variance Gaussian-distributed random numbers
Ksqrt = sqrtm(K);  % matrix square-root
xi = Ksqrt*yi + m;
 
Back
Top