MATLAB: How to insert correlation co-efficient matrix between variables following normal distribution in matlab

amaxcorrelation co-efficientmwnormrnd

Let, there be two variables, amax, maximum value of horizontal ground acceleration and mw, magnitude of an earthquake required to find out CSR, cyclic stress ratio, a term related to liquefaction. Both of these variables follow normal random distribution and the correlation coefficient between them is 0.9. I have defined the two concerned variables as uncorrelated ones in the following manner,
amax=normrnd(mean,standard deviation,no. of rows,no. of columns); mw=normrnd(mean,standard deviation,no. of rows,no. of columns);
normrnd is a command in the matlab to generate a normal distribution of given size, for a particular value of mean and standard deviation.
For each of these values I found out corresponding CSR values through an empirical formula. Suggest me how to insert the correlation co-efficient matrix(symmetric) of order 2×2 in a matlab program along with the definitions of these two variables.

Best Answer

It seems like you want to generate two normally distributed random variables with correlation of 0.9. You can use the function "mvnrnd" from the statistics toolbox.
mu = [2 3]; % Vector of means. mean of amax is 2 and mean of mw is 3
sig = [1 0.9;0.9 1]; % Covariance matrix. Correlation is 0.9
nPts = 50; % Number of points you want to generate for each random variable
rVec = mvnrnd(mu,sig,nPts); % Generate the correlated random variables
Then you can extract "amax" and "mw" from "rVec":
amax = r(:,1);
mw = r(:,2);
And you can check the correlation between the two variables using the "corr" function and ensure that it is approximately 0.9
corr(amax,mw)