我有一个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来解决问题,但即使这样也行不通
答案 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类:)