Calling User-defined Script from Java

3 次查看(过去 30 天)
I've installed R2017a and try to use Matlab Engine API for Java to run a user-defined script/function from Java.
The examples provided here(https://uk.mathworks.com/help/matlab/matlab_external/java-example-source-code.html) work perfectly fine. These examples, however, make use of Matlab package functions such as gcd, max etc.
I can't find any examples that enable to import and execute Matlab scripts (functions) defined by a user. Some examples for Python are provided here(https://uk.mathworks.com/matlabcentral/answers/322114-calling-script-from-python) but unfortunately, do not work in Java.
Any ideas how to achieve this functionality?
  2 个评论
Simos Gerasimou
Simos Gerasimou 2017-9-7
I tried the solution suggested at SO using matlabcontrol 4.1.0, but unfortunately, it does work for Matlab2017a.
Also, since a Java API for Matlab has been released, I expected that the functionality to do what matlabcontrol does would be supported as well!!

请先登录,再进行评论。

回答(1 个)

Amit Doshi
Amit Doshi 2017-9-8
Hello,
You can call your function using 'eval'.
For example,
//Start MATLAB asynchronously
Future<MatlabEngine> eng = MatlabEngine.startMatlabAsync();
// Get engine instance
MatlabEngine ml = eng.get();
// Evaluate the command to cd to your function
ml.eval("cd path/to/funtion");
// Evaluate the function
ml.eval("myFunction(args)");
  2 个评论
Jiss George
Jiss George 2018-4-22
can u please give more explanation, when i am executing this ml.eval("cd path/to/funtion"); am getting error as cd can't cd to directory.
Manuel Lindorfer
Manuel Lindorfer 2018-11-23
You have to specify the apostrophes properly when executing the command, similar to when executing it within the Matlab environment. For example,
// Start Matlab
Future<MatlabEngine> engine = MatlabEngine.startMatlabAsync();
MatlabEngine eng = engine.get();
// Change directory and evaluate your function
eng.eval("cd 'path/to/your/function'");
eng.feval("yourFunction", param1, param2, ...);

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Call MATLAB from Java 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by