Реклама:

Пример. При создании проекта factormatrix предыдущего параграфа, Java Builder создает два стандартных интерфейса для метода cholesky: без входных параметров и с одним входным параметром (два перегруженных метода, которые отличаются числом аргументов). Все они записываются в файле factor.java в каталоге \MatrixMathExample\factormatrix\src\factormatrix. Приведем коды этих методов:

public Object[] cholesky(int nargout) throws MWException

{

Object[] lhs = new Object[nargout];

iMCR.invoke(Arrays.asList(lhs), Collections.EMPTY_LIST, scholeskySignature);

return lhs;

}

public Object[] cholesky(int nargout, Object A) throws MWException

{

Object[] rhs = {A};

Object[] lhs = new Object[nargout];

iMCR.invoke(Arrays.asList(lhs), Arrays.asList(rhs), scholeskySignature);

return lhs;

}

Интерфейс mlx

Отличается тем, что выходные массивы входят в число аргументов, а сам метод не возвращает никакого значения (тип void). Этот интерфейс позволяет пользователю определять вводы функции как массив Object[] , где каждый элемент массива - один входной параметр. Аналогично пользователь также дает предварительно распределенный массив Object[] для выводов функции. Длина массива вывода определяется числом выводов функции. Каждый выходной массив должен быть в конце программы освобожден вызовом метода dispose()

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

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

Для функции со следующей структурой:

function [Out1, Out2, varargout] = foo(In1, In2, InN,

varargin)

Java Builder генерирует следующие интерфейсы mlx:

public void foo (List outputs, List inputs) throws MWException; public void foo (Object[] outputs, Object[] inputs) throws MWException;

Пример. При создании проекта factormatrix предыдущего параграфа, Java Builder создает два mlx интерфейса: используя контейнеры java.util.List и массивы Object для вводов и выводов (два перегруженных метода). Приведем коды этих методов:

public void cholesky(List lhs, List rhs) throws MWException

{

iMCR.invoke(lhs, rhs, scholeskySignature);

}

public void cholesky(Object[] lhs, Object[] rhs) throws MWException

{

iMCR.invoke(Arrays.asList(lhs), Arrays.asList(rhs), scholeskySignature);

}

Замечание. Как при стандартном, так и при интерфейсе mlx, результат получается в форме массива Object[]. Каждый элемент этого массива содержит один вывод, который также может быть массивом того типа, который определен соответствующей m-функцией. Поэтому, для получения отдельного результата нужно обратиться к элементу массива Object[], а затем производить с ним какие-либо операции.

Например, в случае магического квадрата, сначала находим результат result как массив Object[], состоящий из одного элемента:


⇐ Предыдущая страница| |Следующая страница ⇒