Chiamare Java da MATLAB?

Voglio che il programma Matlab chiami un file java, preferibilmente con un esempio.

Ok, proverò a dare un mini-esempio qui. Utilizza le funzioni java direttamente dalla finestra di Matlab come suggerisce zellus oppure, se necessario, crea la tua class java. Ecco un esempio:

package testMatlabInterface; public class TestFunction { private double value; public TestFunction() { value = 0; } public double Add(double v) { value += v; return value; } } 

Quindi trasformalo in un file jar. Supponendo di aver inserito il file in una cartella denominata testMatlabInterface , esegui questo comando dalla riga di comando:

 jar cvf testMatlab.jar testMatlabInterface 

Quindi, in Matlab, accedere alla directory in cui si trova il file testMatlab.jar ed eseguire il comando, import testMatlabInterface.* Per importare tutte le classi nel pacchetto testMatlabInterface . Quindi puoi usare la class in questo modo:

 >> methodsview testMatlabInterface.TestFunction >> me = testMatlabInterface.TestFunction() me = [email protected] >> me.Add(10) ans = 10 >> me.Add(10) ans = 20 >> me.Add(10) ans = 30 

Fammi sapere se posso essere di ulteriore aiuto.

Ci sono tre casi da considerare.

  1. Librerie integrate Java.

    Cioè, qualsiasi cosa descritta qui . Questi articoli possono essere semplicemente chiamati direttamente. Per esempio:

     map = java.util.HashMap; map.put(1,10); map.put(2,30); map.get(1) %returns 10 

    L’unica complicazione è la mapping di Matlab tra tipi di dati Matlab e tipi di dati Java. Queste mappature sono descritte qui (da Matlab a Java) e qui (da Java a Matlab) . (tl; dr: di solito le mappature sono come ti aspetteresti)

  2. File * .jar precompilati

    Per prima cosa è necessario aggiungerli al percorso di class java di Matlab. Puoi farlo dynamicmente (cioè, per sessione Matlab, senza lo stato di Matlab richiesto), come segue:

     javaaddpath('c:\full\path\to\compiledjarfile.jar') 

    È inoltre ansible aggiungere questi staticamente modificando il file classpath.txt. Per maggiori informazioni usa docsearch java class path .

  3. Precompilato *. Class file.

    Sono simili al file * .jar, eccetto che è necessario aggiungere la directory contenente il file di class, piuttosto che i file di class stessi. Per esempio:

     javaaddpath('c:\full\path\to\directory\containing\class\files\') %NOT THIS: javaaddpath('c:\full\path\to\directory\containing\class\files\classname.class')