2

我正在使用 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

编辑:我在 Ubuntu 12.04 上使用 Octave 3.2.4
EDIT2:解决方案是安装更新版本的 Octave。此功能是在 3.2 之后实现的。

4

2 回答 2

2

这看起来像一个 Octave 错误(至少在 3.0.5 版本中);它在 Matlab 中运行良好(至少在 7.10 版中)。

当然,要解决这个问题,您可以计算:

cov(a) * (N-1) / N
于 2012-05-27T11:52:49.957 回答
1

type help cov,并注意opt 已删除的内容不存在。

更好的是,做

gedit /usr/share/octave/3.2.4/m/statistics/base/cov.m

并将其与的新代码进行比较

Opt最近消失了。同时使用奥利的把戏

编辑:我收回,这是一个新功能。不确定使用的是哪个版本的 Octave,但您需要升级。如果可以找到存储库,则进行不稳定的突触升级,或者从源代码构建它。

编辑 2:2011 年 1 月 (3.4.1) 添加的功能。3.2.4 于 2010 年 1 月发布。当前版本为 3.6.1

于 2012-05-27T12:36:25.660 回答