user3025977
user3025977

Reputation: 1

Determine Covariance for multivariate normal distribution in MATLAB

I am trying to create a bivariate normal distribution of random numbers in Matlab that is symmetrical. I know the standard deviation of the gaussian (15 for example) and that it is the same in both directions. How do I use this standard deviation information to get the covariance in a form that Matlab will accept for the mvnrnd command? Thanks, I would really appreciate any advice.

Upvotes: 0

Views: 1708

Answers (3)

Oliver Amundsen
Oliver Amundsen

Reputation: 1511

You can use the command cov in Matlab:

SIGMA = cov([x y]);

HTH

Upvotes: 0

Luis Mendo
Luis Mendo

Reputation: 112659

If the random variables are independent, the off-diaginal elements of the covariance matrix are zero. So that matrix will be diag(std1,std2), where std1 and std2 are the standard deviations of your two variables. In your example you would use diag(15,15).

If the random variables are not independent, you need to specify all four elements of the covariance matrix.

Upvotes: 1

lakshmen
lakshmen

Reputation: 29064

First of all, you need to know the correlation between the two normal variables. Like @Luis said, the diagonal will be 15 each but for the covariance, you need to know the correlation between both.

They are related by this equation:

cov(x,y) = correlation(x,y)*std(x)*std(y)

But if you do not know the correlation, then you can calculate the sample covariance.

Forumla for sample covariance:

enter image description here

To calculate in Matlab:

cov = (1/n)*(x-mean(x))*(y-mean(y))'

With reference to:http://www.cogsci.ucsd.edu/~desa/109/trieschmarksslides.pdf

Upvotes: 1

Related Questions