【发布时间】:2010-12-21 01:16:30
【问题描述】:
给定一个 M 维和 N 个样本的数据矩阵数据,比方说,
data = randn(N, M);
我可以用
计算协方差矩阵data_mu = data - ones(N, 1)*mean(data);
cov_matrix = (data_mu'*data_mu)./N
如果我使用原生 MATLAB 函数
cov_matrix2 = cov(data)
这将永远等于
cov_matrix = (data_mu'*data_mu)./(N-1)
即分母为 (N - 1) 减一。
为什么?你能重现它吗?这是bug吗??
我使用 MATLAB 版本 7.6.0.324 (2008)。
【问题讨论】:
-
Matlab 绝不会让像这样的“错误”从他们身边溜走。
N-1是有原因的,我找找。 newton.dep.anl.gov/newton/askasci/1993/math/MATH014.HTMwiki.answers.com/Q/…'或'n-1' -
这可能取决于您查看的是
sample (co)variance还是population (co)variance。对于大 N,它们非常接近,但你必须小心小 N。
标签: matlab covariance