将一个矢量从Matlab传递给Scala类

时间:2016-10-11 12:32:19

标签: java matlab scala vector

我有一个Scala的问题,并将一个双向量从MATLAB传递给我的Scala类。

假设我们有一个这种形式的Scala类:

class MyClass {

def myMethod(x: Seq[Double]): Double = {
    val methodValue = for(i <- x.indices) yield { math.pow( x(i),2.0) }
    methodValue.sum
    }

}
  

我以前编译过这个匹配的Java版本的Matlab和JRE,以及需要的东西

  

我测试了Seq [Double],Array [Double]和Vector [Double],但没有取得任何进展

现在我想在MATLAB中调用这个类并给它一个所需的行向量并得到它的平方和值。

为此,我在Matlab中编写了这个mfile:

clc, clear, close all

javaaddpath(pwd)
javaaddpath('C:\Program Files\scala\lib\scala-library.jar')
javaclasspath('-dynamic')

newInstanceOfClass = MyClass
newInstanceOfClass.myMethod([1 2 3 4])

但我得到一个错误说:

  

找不到匹配签名的方法'myMethod'   class'MyClass'。

我不知道如何将简单的向量传递给此Scala类。任何人都可以帮我吗?

  

我也尝试使用Matlab的javaArray来解决问题,但即使这样也行不通

1 个答案:

答案 0 :(得分:0)

我认为我解决了这个问题:

首先,我按如下方式更改了我的Scala类:

class MyClass {

def myMethod(x: Array[java.lang.Double]): Double = {
    val methodValue = for(i <- x.indices) yield { math.pow( x(i),2.0) }
    methodValue.sum
    }

}
  

我使用java.lang.Double格式制作Array[java.lang.Double]而不是Array[Double],而实际上是Array[scala.Double]

最后在我的Matlab脚本中,我将所需的向量转换为javaArray [看看Matlab文档],然后通常可以从Matlab Mfile运行Scala类:)