我正在尝试找出一种从 java 运行 .m 文件的方法。
当 .m 文件运行时,它会输出一个我需要检索的文本文件。我已经有了在 java 中检索文本文件的代码,但我仍然无法弄清楚如何从 java 启动和运行 .m 文件,以便它输出我需要的文件。有任何想法吗?
我正在尝试找出一种从 java 运行 .m 文件的方法。
当 .m 文件运行时,它会输出一个我需要检索的文本文件。我已经有了在 java 中检索文本文件的代码,但我仍然无法弄清楚如何从 java 启动和运行 .m 文件,以便它输出我需要的文件。有任何想法吗?
您可以只启动一个 Java 进程并运行 matlab..."matlab -r "yourMfile"
这是您正在寻找的代码:
import matlabcontrol.*;
public class matlabconnect
{
public static void main(String[] args)
throws MatlabConnectionException, MatlabInvocationException
{
// create proxy
MatlabProxyFactoryOptions options =
new MatlabProxyFactoryOptions.Builder()
.setUsePreviouslyControlledSession(true)
.build();
MatlabProxyFactory factory = new MatlabProxyFactory(options);
MatlabProxy proxy = factory.getProxy();
// call builtin function
proxy.eval("disp('hello world')");
// call user-defined function (must be on the path)
proxy.feval("matlab_file_name");
// close connection
proxy.disconnect();
}
我已经测试了该程序。它运作良好。不要忘记把你的 matlab 文件放到它的默认路径下。
matlab / JAVA 已经有一些更新的 api
<dependency>
<groupId>com.diffplug.matsim</groupId>
<artifactId>matconsolectl</artifactId>
<version>4.5.0</version>
</dependency>
和
// create proxy
MatlabProxyFactoryOptions.Builder builder = new MatlabProxyFactoryOptions.Builder();
MatlabProxyFactory factory = new MatlabProxyFactory(builder.build());
// get the proxy
MatlabProxy proxy = factory.getProxy();
// call user-defined function (must be on the path)
proxy.eval("addpath('"...PATH..."')");
proxy.feval("function");
// close connection
proxy.disconnect();
我认为 MatlabControl 是你想要的。这一切都在这里描述:http ://www.cs.virginia.edu/~whitehouse/matlab/JavaMatlab.html
本质上,调用
MatlabControl.eval("yourfile.m");