我正在使用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
八度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之后实现的。
这看起来像一个八度错误(至少在3.0.5版中); 它在Matlab中正常运行(至少在版本7.10中)。
当然,要解决此问题,您可以只计算:
cov(a) * (N-1) / N
也许有人可以确认这一点...我无法在Matlab中试用,因为我在家中没有执照...
我的意思是确认它在八度中不起作用。 我相信您在Matlab中会做到的;-)
@OmarKohl:我也在Octave中尝试过,但是我所拥有的版本已经过时了...
键入help cov,并注意opt 已被删除 strike>不存在。
更好,做
gedit /usr/share/octave/3.2.4/m/statistics/base/cov.m
并将其与旧 strike>新代码进行比较
Opt最近消失 strike>。 同时使用Oli的把戏
编辑:我认为,这是一项新功能。 不知道使用哪个版本的Octave,但是您需要升级。 如果可以找到存储库,则可以进行不稳定的突触升级,也可以从源代码构建它。
编辑2:功能于2011年1月(3.4.1)添加。 3.2.4发布于2010年1月。当前版本为3.6.1