matlab里面的cov函数,如何强制Matlab /八度cov函数使用可选参数

博主在使用Octave的cov函数时遇到错误,该错误指出参数数量不正确。问题在于旧版本的Octave不支持协方差函数的第二个参数用于指定归一化方式。解决方案是升级到Octave的较新版本,因为该功能在3.4.1版本之后被添加。在Matlab中,该功能工作正常。博主建议使用最新版本的Octave以避免此类问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值