从 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
,但是当我尝试调用函数,它告诉我在 Matlab
的 javaclasspath
中没有使用此名称的 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
检查是否使用相同的 JRE/JDK 来编译您的 JAVA 文件。在 Matlab 上执行:
version -java
将您的 MyFunction.java 与 相同 jdk 如上,然后找到您的 MyFunction.class
找到您的 Matlab classpath.txt。在 matlab cmd 中输入以下内容。
which classpath.txt
打开你的 classpath.txt 作为 administrator.Add 目录的完整路径 MyFunction.class 到 'classpath.txt' 文件的末尾作为一行并保存文件。
重新启动 Matlab。
到 运行 在 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.
我正在尝试从 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
,但是当我尝试调用函数,它告诉我在 Matlab
的 javaclasspath
中没有使用此名称的 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
检查是否使用相同的 JRE/JDK 来编译您的 JAVA 文件。在 Matlab 上执行:
version -java
将您的 MyFunction.java 与 相同 jdk 如上,然后找到您的 MyFunction.class
找到您的 Matlab classpath.txt。在 matlab cmd 中输入以下内容。
which classpath.txt
打开你的 classpath.txt 作为 administrator.Add 目录的完整路径 MyFunction.class 到 'classpath.txt' 文件的末尾作为一行并保存文件。
重新启动 Matlab。
到 运行 在 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.