http://stackoverflow.com/questions/1607933/running-matlab-function-from-java

 

 

 

Running MATLAB function from Java

I have an .m file in MATLAB which I would like to call from Java an get the solution as a string or whatever in Java. This sounds really simple but for some reason I can't make it work.

I tried this:

matlab -nosplash -wait -nodesktop -r  myFunction

but I'm not sure how I parse the answer since MATLAB opens it's own command line (in Windows).

I use this, but it doesn't return anything.

Process p = Runtime.getRuntime().exec(commandToRun);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));

also it seems that every time I call MATLAB it opens a separate window which is a problem because I'd like to run this many times.

share|improve this question
    
perhaps -logfile command option might help: stackoverflow.com/questions/1518072/… – Amro Oct 22 '09 at 16:28

5 Answers 5

The trick is to use the MatlabControl class http://www.cs.virginia.edu/~whitehouse/matlab/JavaMatlab.html. It's very easy to use and you can do exactly what you're trying to do (and more).

share|improve this answer
    
Jeff! Rob! Good to see you guys on here. – Scottie T Oct 23 '09 at 17:16
    
Small world, isn't it? – Jeff Storey Oct 23 '09 at 17:20

matlabcontrol is based on the same underlying MATLAB library used by MatlabControl mentioned by Jeff, but is more up to date, reliable, and documented. To get started, take a look at the walkthrough.

share|improve this answer

JAMAL is an open source, Java RMI-based (Java Remote Method Invocation API) library that suits your needs

share|improve this answer
    
This link do not work. – user1850484 Sep 13 '16 at 10:34

In Matlab R2016b, MathWorks added MATLAB Engine API for Java which allows to execute MATLAB code from Java.

share|improve this answer

There exists a good Java-COM-Bridge called JaCoB (http://sourceforge.net/projects/jacob-project/) which you can use to automatically start Matlab as a COM-Server in the background. You can then follow the instructions in the Matlab help to interact with the Matlab COM Interface.

Although this is a very generic interface, it provides enough flexibility to easily do a few calls to Matlab like in your case.

Simply download the JaCoB package and look in the docs folder for some documentation. You also have to include the Jacob DLL in your path.

share|improve this answer

Your Answer

 

 

 

 

 

Posted by uniqueone
,