Reputation: 1
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
Reputation: 1511
You can use the command cov in Matlab:
SIGMA = cov([x y]);
HTH
Upvotes: 0
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
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:
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