为什么MATLAB本机函数cov(协方差矩阵计算)使用与我预期不同的除数?

Fre*_*u73 2 matlab covariance

给出M维和N个样本的数据矩阵数据,比方说,

data = randn(N, M);
Run Code Online (Sandbox Code Playgroud)

我可以计算协方差矩阵

data_mu = data - ones(N, 1)*mean(data);
cov_matrix = (data_mu'*data_mu)./N
Run Code Online (Sandbox Code Playgroud)

如果我使用原生MATLAB函数

cov_matrix2 = cov(data)
Run Code Online (Sandbox Code Playgroud)

这总是等于

cov_matrix = (data_mu'*data_mu)./(N-1)
Run Code Online (Sandbox Code Playgroud)

也就是说,分母是(N-1)少一个.

为什么??你能重现吗?这是一个错误?

我使用MATLAB版本7.6.0.324(2008).

Jas*_*n S 9

也就是说,分母是(N-1)少一个.为什么??你能重现吗?这是一个错误?

请参阅cov文档.它与人口方差与样本方差有关.

还要注意的是,如果你希望使用的N-1分母ñ相反,你可以尾随添加1参数调用,即cov(x,y,1)cov(x,1)按文档.