java - 将 vector 从 Matlab 传递到 Scala 类

标签 java matlab scala vector

我在使用 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 the Array[java.lang.Double] instead of Array[Double] which was in fact Array[scala.Double].

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

关于java - 将 vector 从 Matlab 传递到 Scala 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39977326/

相关文章:

matlab - 如何在图像中放置边距?

function - 命名方法和命名函数的定义是什么?

scala - 如何使用 reduceByKey 将值添加到 Scala Spark 中的 Set 中?

java - 强制 MapStruct 使用自定义方法而不是 dto 值

matlab - 在matlab中,不使用循环为每一行增加不同的列元素

java - 如何通过测试证明 arraylist 不是线程安全的?

matlab - Matlab 的 Mod 函数返回 0

Scala 滥用隐式转换

java - Hibernate 错误的日期时间值

java - MySQL 和 SQLite 的唯一约束和插入或更新