我在使用 Scala 并将 double vector 从 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
}
}
I've previously compiled this, matched java versions of my Matlab and JRE, and what ever needed
.
I have tested Seq[Double], Array[Double] and Vector[Double], but no progress was achieved
.
现在我想在 MATLAB 中调用此类并为其提供所需的行 vector 并获取其平方和值。
为此,我在 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])
但我收到一条错误消息:
No method 'myMethod' with matching signature found for class 'MyClass'.
我不知道如何将一个简单的 vector 传递给这个 Scala 类。有人可以帮我解决这个问题吗?
I also tried to use Matlab's javaArray to solve the problem but even that didn't work
最佳答案
嗯,我想我解决了这个问题:
首先,我按如下方式更改了我的 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
}
}
I used
java.lang.Double
format to make theArray[java.lang.Double]
instead ofArray[Double]
which was in factArray[scala.Double]
.
最后,在我的 Matlab 脚本中,我将所需的 vector 转换为 javaArray
[查看 Matlab 文档],然后通常可以从 Matlab Mfile 运行 Scala 类:)
关于java - 将 vector 从 Matlab 传递到 Scala 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39977326/