2009-10-22 32 views
11

Ich habe eine .m-Datei in MATLAB, die ich von Java aufrufen möchte und die Lösung als String oder was auch immer in Java. Das klingt wirklich einfach, aber aus irgendeinem Grund kann ich es nicht funktionieren lassen.Ausführen der MATLAB-Funktion von Java

Ich versuchte dies:

matlab -nosplash -wait -nodesktop -r myFunction 

aber ich bin nicht sicher, wie ich die Antwort analysieren, da MATLAB seine eigene Kommandozeile (Windows) wird geöffnet.

Ich benutze dies, aber es gibt nichts zurück.

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

auch scheint es, dass jedes Mal, wenn ich MATLAB nenne es ein separates Fenster öffnet, was ein Problem ist, weil ich das schon oft laufen möchte.

+0

vielleicht könnte '-logfile' Befehl Option helfen: http://StackOverflow.com/Questions/1518072/Suppress-Start-Message-of-Matlab/1518165#1518165 – Amro

Antwort

0

Es gibt eine gute Java-COM-Bridge namens JaCoB (http://sourceforge.net/projects/jacob-project/), mit der Sie Matlab automatisch als COM-Server im Hintergrund starten können. Sie können dann den Anweisungen in der Matlab-Hilfe folgen, um mit der Matlab COM-Schnittstelle zu interagieren.

Obwohl dies eine sehr generische Schnittstelle ist, bietet es genug Flexibilität, um einige Matlab-Aufrufe wie in Ihrem Fall auszuführen.

Laden Sie einfach das JaCoB-Paket herunter und suchen Sie im Dokumentordner nach Dokumentation. Sie müssen auch die Jacob-DLL in Ihren Pfad einschließen.

7

matlabcontrol basiert auf der gleichen MATLAB-Bibliothek wie MatlabControl, die von Jeff erwähnt wurde, ist aber aktueller, zuverlässiger und dokumentiert. Um zu beginnen, werfen Sie einen Blick auf die walkthrough.

2

JAMAL ist eine Open Source, Java RMI-basierte (Java Remote Method Invocation API) Bibliothek, die Ihren Bedürfnissen entspricht

+0

Dieser Link funktioniert nicht. – user1850484