Calling User-defined Script from Java

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 件のコメント

Amina Rahman
Amina Rahman 2017 年 9 月 7 日
Did you mean this solution?
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 日

0 投票

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, ...);

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeCall MATLAB from Java についてさらに検索

タグ

質問済み:

2017 年 9 月 5 日

コメント済み:

2018 年 11 月 23 日

Community Treasure Hunt

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

Start Hunting!

Translated by