MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   为什么MATLAB本机函数cov(协方差矩阵计算)使用与我预期不同的除数? (https://www.labfans.com/bbs/showthread.php?t=23699)

poster 2019-12-10 20:48

为什么MATLAB本机函数cov(协方差矩阵计算)使用与我预期不同的除数?
 
假设有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)。



[B]回答:[/B]
[INDENT]也就是说,分母是(N-1)少一。为什么??你能复制吗?这是一个错误吗?

[/INDENT]请参阅[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/cov.html"]cov文档[/URL] 。它与[URL="http://en.wikipedia.org/wiki/Variance#Population_variance_and_sample_variance"]总体方差与样本方差有关[/URL] 。

还要注意,如果您希望使用分母N而不是N-1,则可以在调用中添加尾随1参数,即根据文档所述, cov(x,y,1)或cov(x,1) 。



[url=https://stackoverflow.com/questions/3256798]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 01:02

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.