Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么MATLAB原生函数cov(协方差矩阵计算)使用的除数与我预期的不同?_Matlab_Covariance - Fatal编程技术网

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

为什么MATLAB原生函数cov(协方差矩阵计算)使用的除数与我预期的不同?,matlab,covariance,Matlab,Covariance,给定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)少一个 为什么??你能复制它吗?这是一只虫子吗

给定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)少一个

为什么??你能复制它吗?这是一只虫子吗

我使用MATLAB版本7.6.0.324(2008)

也就是说,分母是(N-1)少一个。 为什么?你能复制它吗?这是一只虫子吗

看。这和我的工作有关


另外请注意,如果您希望使用分母N而不是N-1,则可以向调用中添加一个尾随的
1
参数,即
cov(x,y,1)
cov(x,1)
,如文档所示。

N-1是计算方差时使用的正确分母。 这就是所谓的贝塞尔校正(http://en.wikipedia.org/wiki/Bessel%27s_correction)
简单地说,1/(n-1)比1/n产生更准确的预期方差估计。

Matlab绝不会让这样的“错误”从他们身边溜走。
N-1
是有原因的,让我找到它。”或者“n-1”,这可能取决于您是查看
样本(co)方差
还是
总体(co)方差
。对于大N,它们非常接近,但你必须小心小N。哈,我显然看不懂。在发布这篇文章之前,我确实“帮助了cov”。谢谢