我正在使用Matlab和Octave的 cov (协方差)函数。实际上我正在使用 Octave ,但最终它必须适用于两者。此函数有一个可选的第二个或第三个参数,用于指示是否应使用 N 或N-1完成规范化。
如果我这样做:cov(points,1)
(其中点是4x2矩阵)我得到以下错误:
error: cov: x and y must have the same number of observations
总的来说,我想知道Matlab / Octave如何区分第二个参数是另一个矩阵还是一个可选参数(因为它可以有2个或3个参数)。
更具体地说,我想知道如何解决我的问题?
Matlab cov()文档:http://www.mathworks.de/help/techdoc/ref/cov.html
Octave cov()文档:http://www.gnu.org/software/octave/doc/interpreter/Correlation-and-Regression-Analysis.html
答案 0 :(得分:2)
这看起来像一个Octave错误(至少版本3.0.5);它在Matlab中工作正常(至少在版本7.10中)。
当然,要解决这个问题,你可以计算:
cov(a) * (N-1) / N
答案 1 :(得分:1)
输入help cov
,并注意opt
已被删除不存在。
更好,做
gedit /usr/share/octave/3.2.4/m/statistics/base/cov.m
并将其与 old new code
最近选择消失。在此期间使用Oli的技巧
修改:我接回来了,这是一项新功能。不确定哪个版本的Octave正在使用它,但您需要升级。如果您可以找到存储库,或者从源代码构建存储库,则执行不稳定的突触升级。
编辑2 :2011年1月添加的功能(3.4.1)。 3.2.4于2010年1月发布。当前版本为3.6.1