Вызов Java из MATLAB?

Я хочу, чтобы программа Matlab вызывала java файл, предпочтительно с примером.

Ответы

Ответ 1

Хорошо, я попытаюсь привести здесь мини-пример. Либо используйте java-функции прямо из окна Matlab, как предлагает zellus, либо, если это необходимо, создайте свой собственный класс java. Вот пример:

package testMatlabInterface;

public class TestFunction
{
  private double value;

  public TestFunction()
  {
      value = 0;
  }

  public double Add(double v)
  {
      value += v;
      return value;
  }
}

Затем превратите его в файл jar. Предполагая, что вы поместили файл в папку с именем testMatlabInterface, запустите эту команду в командной строке:

jar cvf testMatlab.jar testMatlabInterface

Затем в Matlab перейдите в каталог, в котором находится ваш testMatlab.jar файл, и запустите команду import testMatlabInterface.*, чтобы импортировать все классы в пакете testMatlabInterface. Затем вы можете использовать класс следующим образом:

>> methodsview testMatlabInterface.TestFunction
>> me = testMatlabInterface.TestFunction()

me =

[email protected]

>> me.Add(10)

ans =

    10

>> me.Add(10)

ans =

    20

>> me.Add(10)

ans =

    30

Сообщите мне, могу ли я оказать дополнительную помощь.

Ответ 2

Существует три случая.

  • Встроенные библиотеки Java.

    То есть, все, что описано здесь. Эти элементы можно просто вызвать напрямую. Например:

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

    Единственное усложнение - это отображение Matlab выполняется между типами данных Matlab и типами данных Java. Эти сопоставления описаны здесь (Matlab to Java) и здесь (Java to Matlab ). (tl; dr: обычно сопоставления выглядят так, как вы ожидали)

  • Предварительно скомпилированные файлы *.jar

    Сначала вам нужно добавить их в путь класса Java Matlab. Вы можете сделать это динамически (т.е. Сеанс на основе Matlab без необходимого состояния Matlab) следующим образом:

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

    Вы также можете добавить их статически, отредактировав файл classpath.txt. Для получения дополнительной информации используйте docsearch java class path.

  • Предварительно скомпилированные файлы *.class.

    Они похожи на файл *.jar, за исключением того, что вам нужно добавить каталог, содержащий файл класса, а не сами файлы классов. Например:

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