Undergrad Implementation of Correlated Gaussian Random Fields Model

Click For 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
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;
 
First trick I learned this one a long time ago and have used it to entertain and amuse young kids. Ask your friend to write down a three-digit number without showing it to you. Then ask him or her to rearrange the digits to form a new three-digit number. After that, write whichever is the larger number above the other number, and then subtract the smaller from the larger, making sure that you don't see any of the numbers. Then ask the young "victim" to tell you any two of the digits of the...

Similar threads

  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 31 ·
2
Replies
31
Views
3K
  • · Replies 6 ·
Replies
6
Views
2K
  • · Replies 4 ·
Replies
4
Views
1K
  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 24 ·
Replies
24
Views
7K
Replies
4
Views
5K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 6 ·
Replies
6
Views
2K