【发布时间】:2018-11-06 14:31:05
【问题描述】:
我想让matlab程序调用一个java文件,最好有例子。
【问题讨论】:
我想让matlab程序调用一个java文件,最好有例子。
【问题讨论】:
需要考虑三种情况。
Java 内置库。
也就是说,here 描述的任何内容。这些项目可以简单地直接调用。例如:
map = java.util.HashMap;
map.put(1,10);
map.put(2,30);
map.get(1) %returns 10
唯一复杂的是 Matlab 在 Matlab 数据类型和 Java 数据类型之间执行的映射。这些映射描述为here (Matlab to Java) 和here (Java to Matlab)。 (tl; dr:通常映射如您所料)
预编译的 *.jar 文件
您首先需要将这些添加到 Matlab 的 java 类路径中。您可以动态执行此操作(即每个 Matlab 会话,不需要 Matlab 状态),如下所示:
javaaddpath('c:\full\path\to\compiledjarfile.jar')
您也可以通过编辑 classpath.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')
【讨论】:
javac --source 1.5 --target 1.5 <other arguments>。
好的,我将尝试在这里举一个小例子。可以按照 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
如果我能提供进一步的帮助,请告诉我。
【讨论】: