从 matlab 脚本调用 java 函数

Call a java function from matlab script

我正在尝试从 Matlab 脚本调用 java 函数,我尝试了网站上提供的所有解决方案,但没有遇到问题。 我的class很简单:

  package testMatlabInterface;

public class TestFunction
{
  private double value;

  public TestFunction()
  {
      value=0;
  }

  public double Add(double v)
  {
      value += v;
      return value;
  }

  public static void main(String args[])
  {

  }
}

所以我将 .java 文件(也 .class)放在我的工作空间 C:\scriptsMatlab 中,并将此路径添加到 Matlab 的 javaclasspath,但是当我尝试调用函数,它告诉我在 Matlabjavaclasspath 中没有使用此名称的 class。

编辑: 这是 Matlab 使用的 java 版本:

Java 1.6.0_17-b04 with Sun Microsystems Inc. Java HotSpot(TM) Client VM mixed mode

这是 jdk 上我用来编译 class 的版本:

但是当我尝试从 matlab 执行此命令时

>> javaaddpath 'C:\scriptsMatlab'
>> obj = TestFunction

它告诉我:

Undefined function or variable 'TestFunction'.

选项 1

  1. 检查是否使用相同的 JRE/JDK 来编译您的 JAVA 文件。在 Matlab 上执行:

    version -java
    
  2. 将您的 MyFunction.java 相同 jdk 如上,然后找到您的 MyFunction.class

  3. 找到您的 Matlab classpath.txt。在 matlab cmd 中输入以下内容。

    which classpath.txt
    
  4. 打开你的 classpath.txt 作为 administrator.Add 目录的完整路径 MyFunction.class 到 'classpath.txt' 文件的末尾作为一行并保存文件。

  5. 重新启动 Matlab。

  6. 到 运行 在 Matlab 中。创建 MyFunction 对象。

    obj = MyFunction
    

    到运行 matlab中的main()方法。

    javaMethod('main', obj, '')
    

选项 2

执行步骤 1-2。

在Matlab中执行以下命令

JAVAADDPATH PATH/to/Directoryof MyFunction.class.

这里不需要重启Matlab。 只需 运行 使用

obj = MyFunction;
javaMethod('main', obj);

来自 MathWorks:

javaMethod(MethodName,JavaObj,x1,...,xN) calls the method in the class of the Java® object array with the signature matching the arguments x1,...,xN.

javaMethod(StaticMethodName,ClassName,x1,...,xN) calls the static method in class ClassName.