Code covered by the BSD License

### Highlights fromConvert covariance matrix to correlation matrix

Be the first to rate this file! 5 Downloads (last 30 days) File Size: 1.76 KB File ID: #20630

# Convert covariance matrix to correlation matrix

by Denis

09 Jul 2008 (Updated 10 Jul 2008)

Converts covariance matrix to correlation matrix setting exactly 1-s on its main diagonal

File Information
Description

The function is "remix" of native matlab cov2corr() function, which produces correlation matrix with elements on its main diagonal slightly greater or less then 1. So it can't be used in various further computations, for example in squareform() function.

The problem can be resolved simply by setting all the diagonal elements to 1 (freaky way) or by using variance instead of std while computing correlation matrix (covariance(x,y)/sqrt(var(x)*var(y)) instead of covariance(x,y)/(std(x)*std(y))).

Required Products Financial Toolbox
MATLAB release MATLAB 7.6 (R2008a)
Tags for This File
Everyone's Tags
Tags I've Applied
18 Jul 2008

Example:

x = [0.1 0.2 0.3; .3 .5 .2; .5 .6 .2; .5 .2 .4];

[std, corMatrix] = cov2corr(cov(x));

diag(corMatrix) == 1

15 Jul 2008

Really? Can you give an example of a non-unit-diagonal correlation matrix output by cov2corr?