File Exchange

image thumbnail

Convert covariance matrix to correlation matrix

version 1.0 (1.76 KB) by

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



View License

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))).

Comments and Ratings (2)

denis k


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

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

diag(corMatrix) == 1

Dimitri Shvorob

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

MATLAB Release
MATLAB 7.6 (R2008a)

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video