Реклама:

MWArray resultA = (MWNumericArray) results[0];

double[][] a = resultA.toDoubleArray(); // известно, что второй вывод является 3-мерным числовым массивом

MWArray resultB = (MWNumericArray) results[1];

Int[][][] b = resultB.toIntArray();

Для преобразования массива MATLAB в одномерный массив указанного примитивного типа данных используются следующие методы getTypeData: getByteData, getDoubleData, getFloatData, getlntData,

getLongData, getShortData, getlmagData, getlmagByteData,

getlmagDoubleData, getlmagFloatData, getlmaglntData, getlmagLongData, getlmagShortData

Для преобразования одного элемента массива MATLAB в примитивный тип Java можно также использовать методы getType(int) и getType(int[]), см. раздел 3.3.2.

Таблица 3.5.2 показывает соответствие типов данных MATLAB и типов Java, которое нужно учитывать при преобразовании. Отметим, что конверсионные правила применяются к скалярам, векторам, матрицам, и многомерным массивам перечисленных типов.

Таблица 3.5.2. Соответствие типов MATLAB и Java

Тип MATLAB

Простой тип Java

Тип Java Object

cell

Нет

Object

structure

Нет

Object

char

char

java.lang.Character

Таблица 3.5.2. Соответствие типов MATLAB и Java (окончание)

Тип MATLAB

Простой тип Java

Тип Java Object

double

double

java.lang.Double

single

float

java.lang.Float

int8

byte

java.lang.Byte

int16

short

java.lang.Short

int32

int

java.lang.Integer

int64

long

java.lang.Long

uint8

byte

java.lang.Byte

uint16

short

java.lang.short

uint32

int

java.lang.Integer

uint64

long

java.lang.Long

logical

boolean

java.lang.Boolean

Function handle

Не поддерживается

 

Java class

Не поддерживается

 

User class

Не поддерживается

 

Замечание. Массивы ячеек и структур не поддерживаются в Java, однако класс MWArray, созданный для Java Builder, поддерживает массивы ячеек MWCellArray и структур MWStructArray, так же как и другие массивы MWArray. Отметим также, что Java не имеет никаких типов без знака для представления типов uint8, uint16, uint32, и uint64, используемых в MATLAB. Конструкция и доступ к массивам MATLAB типа без знака требует преобразования. Дополнительную информацию о правилах преобразования см. в com.mathworks.toolbox.javabuilder.

3.5.4. Аргументы методов Java Builder

Обсудим некоторые вопросы, связанные с входными и выходными параметрами методов, созданных Java Builder.

Передача неопределенного числа параметров

Рассмотрим примеры использования m-функций, которые имеют параметры varargin или varargout. Для примера определим m-функцию, которая вычисляет сумму всех введенных слагаемых:

function y = mysum(varargin)

% MYSUM Returns the sum of the inputs.

y = sum([varargin{:}]);

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

Поскольку слагаемых может быть разное число, то вводы задаются через параметр varargin, что означает, что вызывающая программа может определить любое число вводов функции. Результат возвращается как скаляр double.


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