Интерфейсы программирования, сгенерированные MATLAB Compiler SDK

API на основе подписей функции MATLAB

Компилятор генерирует два вида интерфейсов, чтобы обработать MATLAB® функциональные подписи.

  • Подпись standard на Java®

    Этот интерфейс задает входные параметры для каждого перегруженного метода как один или несколько входных параметров класса java.lang.Object или любой подкласс (включая подклассы MWArray). Стандартный интерфейс задает возвращаемые значения, если таковые имеются, как подкласс MWArray.

  • mlx API

    Этот интерфейс позволяет пользователю задавать входные параметры к функции как Объектный массив, где каждый элемент массива является одним входным параметром. Точно так же пользователь также дает mlx соедините интерфейсом с предварительно выделенным Объектным массивом, чтобы содержать выходные параметры функции. Выделенная длина выходного массива определяет количество желаемых функциональных выходных параметров.

    mlx к интерфейсу можно также получить доступ с помощью java.util.List контейнеры вместо Массивов объектов для вводов и выводов. Обратите внимание на то, что, если контейнеры Списка используются, выход List передал в, должен содержать много элементов, равных желаемому количеству функциональных выходных параметров.

    Например, это было бы неправильным использованием:

    java.util.List outputs = new ArrayList(3);
    myclass.myfunction(outputs, inputs); // outputs 0 elements!
    

    Правильное использование:

    java.util.List outputs = Arrays.asList(new Object[3]);
    myclass.myfunction(outputs, inputs); // list has 3 elements

Как правило, вы используете стандартный интерфейс, когда это необходимо, чтобы вызвать функции MATLAB, которые возвращают единый массив. В большинстве других случаев используйте mlx интерфейс.

Стандартный API

Стандартный интерфейс вызова возвращает массив одного или нескольких MWArray объекты.

Стандартный API для родовой функции ни с одним, один, больше чем один или переменное количество аргументов, показывают в следующей таблице.

АргументыAPI, чтобы использовать
Типовая функция MATLAB
function [Out1, Out2, ..., varargout] = foo(In1, In2, ...,
 InN, varargin)
API, при отсутствии входных параметров
public Object[] foo(int numArgsOut) 
API, если существует один входной параметр
public Object[] foo(int numArgsOut, Object In1) 
API, если существует два к N входные параметры
public Object[] foo(
int numArgsOut, 
Object In1,
Object In2, 
... Object InN
) 
API, если существуют дополнительные аргументы, представленные varargin аргумент
public Object[] foo(
int numArgsOut,
 Object in1,
 Object in2,
 ..., Object InN,
Object varargin
)

Следующая таблица показывает детали об аргументах для этих выборок стандартных подписей.

АргументОписаниеДетали об аргументе
numArgsOutКоличество выходных параметров

Целое число, указывающее на количество выходных параметров, вы хотите, чтобы метод возвратился. Чтобы не возвратить аргументы, не используйте этот аргумент.

Значение numArgsOut должно быть меньше чем или равно функции MATLAB nargout.

numArgsOut аргумент должен всегда быть первым аргументом в списке.

In1, In2, ...InNНеобходимые входные параметры

Все аргументы, которые следуют за numArgsOut в списке аргументов входные параметры к названному методу.

Задайте все необходимые входные параметры сначала. Каждый необходимый вход должен иметь класс MWArray или любой класс выведен из MWArray.

vararginДополнительные входные параметры

Можно также задать дополнительные входные параметры, если код MATLAB использует varargin входной параметр: перечислите дополнительные входные параметры или поместите их в Object[] аргумент, помещая массив в последний раз в список аргументов.

Out1, Out2, ...OutNВыходные аргументы

Со стандартным интерфейсом вызова все выходные аргументы возвращены как массив MWArrays.

API mlx

Рассмотрите функцию со следующей структурой:

function [Out1, Out2, ..., varargout] = foo(In1, In2, ..., 
                          InN, varargin)
Компилятор генерирует следующий API как mlx интерфейс:
public void foo (List outputs, List inputs) throws MWException;
public void foo (Object[] outputs, Object[] inputs) 
                                            throws MWException;

Фрагмент кода: Подписи, Сгенерированные для myprimes Примера

Для определенного примера рассмотрите myprimes метод. Этот метод имеет один входной параметр, таким образом, компилятор генерирует три перегруженных метода на Java.

Когда вы добавляете myprimes к классу myclass и создайте класс, компилятор генерирует myclass.java файл. Фрагмент myclass.java описан ниже, чтобы показать перегруженные реализации myprimes метод в коде Java.

/* mlx interface - List version */
public void myprimes(List lhs, List rhs) throws MWException
{
    (implementation omitted)
}
/* mlx interface - Array version */
public void myprimes(Object[] lhs, Object[] rhs) 
                                        throws MWException
{
    (implementation omitted)
 }
/* Standard interface - no inputs*/
public Object[] myprimes(int nargout) throws MWException
   {
      (implementation omitted)
   }
/* Standard interface - one input*/
public Object[] myprimes(int nargout, Object n) 
                                      throws MWException
   {
      (implementation omitted)
   }

Стандартный интерфейс задает входные параметры к функции в рамках списка аргументов и выходных параметров как возвращаемые значения. Вторая реализация демонстрирует feval интерфейс, третья реализация показывает интерфейс, который будет использоваться, при отсутствии входных параметров и четвертых показов реализация, которая будет использоваться, если существует один входной параметр. Вместо того, чтобы возвращать функциональные выходные параметры как возвращаемое значение, feval интерфейс включает оба аргумента ввода и вывода в список аргументов. Выходные аргументы задаются сначала, сопровождаются входными параметрами.

Для получения дополнительной информации об интерфейсах, смотрите Интерфейсы программирования, Сгенерированные MATLAB Compiler SDK.