从 MATLAB 调用 Java?
我希望Matlab程序调用java文件,最好是举个例子。
有三种情况需要考虑。
Java 内置库。
也就是说,这里描述的任何内容。这些项目可以直接调用。例如:
map = java.util.HashMap;
map.put(1,10);
map.put(2,30);
map.get(1) %returns 10
唯一的复杂之处在于 Matlab 在 Matlab 数据类型和 Java 数据类型之间执行的映射。这些映射在这里(Matlab到Java)和这里(Java到Matlab)描述。(tl; dr:通常映射是你所期望的)
预编译的 *.jar 文件
首先需要将它们添加到 Matlab 的 java 类路径中。您可以动态执行此操作(即,每个 Matlab 会话,不需要 Matlab 状态),如下所示:
javaaddpath('c:\full\path\to\compiledjarfile.jar')
还可以通过编辑类路径.txt文件来静态添加这些内容。有关详细信息,请使用 。docsearch java class path
预编译的 *.class 文件。
它们类似于 *.jar 文件,只是您需要添加包含类文件的目录,而不是类文件本身。例如:
javaaddpath('c:\full\path\to\directory\containing\class\files\')
%NOT THIS: javaaddpath('c:\full\path\to\directory\containing\class\files\classname.class')
好吧,我将尝试在这里给出一个迷你示例。要么按照zellus的建议直接从Matlab窗口中使用java函数,要么如果需要允许,创建自己的java类。下面是一个示例:
package testMatlabInterface;
public class TestFunction
{
private double value;
public TestFunction()
{
value = 0;
}
public double Add(double v)
{
value += v;
return value;
}
}
然后将其转换为 jar 文件。假设您将文件放在名为 的文件夹中,请在命令行中运行以下命令:testMatlabInterface
jar cvf testMatlab.jar testMatlabInterface
然后,在 Matlab 中,导航到文件所在的目录并运行命令,以导入包中的所有类。然后,您可以像这样使用该类:testMatlab.jar
import testMatlabInterface.*
testMatlabInterface
>> methodsview testMatlabInterface.TestFunction
>> me = testMatlabInterface.TestFunction()
me =
testMatlabInterface.TestFunction@7e413c
>> me.Add(10)
ans =
10
>> me.Add(10)
ans =
20
>> me.Add(10)
ans =
30
让我知道我是否可以提供进一步的帮助。