2011-12-20 145 views
2

我试图将MATLAB中的数据X转换为Weka Instance类。我使用Weka 3.7.5和MATLAB 7.10(2010a)。无法实例化MATLAB中的Weka类

我已经试过如下:

javaaddpath([WEKA_HOME 'weka.jar']); 
import weka.core.*; 

N = 3; 
inst = Instance(N); 

我收到错误

??? No constructor 'weka.core.Instance' with matching signature found. 

当我键入which Instance,它能够找到这个类。此外,这种形式的构造函数与文档here一致。

我对从MATLAB调用Java的经验不足,所以很可能我在这里错过了一些简单的东西。谢谢!

更新:

  1. 试图铸造N到一个Int32,但没有运气,还是同样的错误。

  2. 我试着用较老版本的Weka(版本3.5.8)试过,它工作。不能解释为什么。

  3. 我发现更新了documentation:它告诉我Instance现在是一个接口,而不是像我在查看的文档那样的类。所以我想我的问题是现在,我可以像我做一个类一样实例化这个吗?遗憾用于最初混淆本..

+0

如何定义'N'?如果使用'int32(N)'将其转换为整数,该怎么办? – yuk 2011-12-20 22:40:09

+0

好的建议,但仍然是同样的行为。 – MarkV 2011-12-20 22:48:44

回答

0

野生猜测:

Wekas API表明,有3层构造:

实例(双重,双[] attValues)
实例(实例实例)
实例(int numAttributes)

因此,如果您使用的是最后一个,先将3投射到int32,如下所示:

inst = Instance(int32(N));

坦率地说,我没有检查它,所以我不能100%肯定

更新:(以下问题编辑) 无法实例的接口! 接口就像用户和程序员之间的SE中的契约。它不是一个具体的实施

0

试试这个:

inst = javaObject('weka.core.Instance', N); 
2

使用类DenseInstance代替Instance。它是3.6中的Interface的实现。

+0

这为我解决了这个问题,使用weka 3.7.6。 谢谢! – julou 2014-02-24 16:16:56

相关问题