views:

53

answers:

1

Given a data matrix data of M dimensions and N samples, say,

data = randn(N, M);

I could compute the covariance matrix with

data_mu = data - ones(N, 1)*mean(data);
cov_matrix = (data_mu'*data_mu)./N

If I use the native MATLAB function

cov_matrix2 = cov(data)

this will always be equal to

cov_matrix = (data_mu'*data_mu)./(N-1)

That is, the denominator is (N - 1) is one less.

Why?? Can you reproduce it? Is this a bug??

I use MATLAB version 7.6.0.324 (2008).

+6  A: 

That is, the denominator is (N - 1) is one less. Why?? Can you reproduce it? Is this a bug??

See the cov documentation. It has to do with population variance vs. sample variance.

Note also that if you wish to use the denominator N instead of N-1, you can add a trailing 1 argument to the call, i.e. cov(x,y,1) or cov(x,1) as per the documentation.

Jason S
ha, I obviously can't read. I did 'help cov' before posting this. Thanks.
Fredriku73

related questions