Реклама:

theMagic = new magic(); // Экземпляр класса

result = theMagic.makesqr(1, n); // Вычисление маг. квадрата

Затем берем элемент result[0] - он содержит матрицу магического квадрата порядка n. Чтобы получить эту матрицу, преобразуем элемент result[0] в массив MWNumericArray. После того, как результат стал массивом MATLAB, преобразуем его в массив Java:

result_mw = new MWNumericArray(result[0],MWClassID.DOUBLE); result double = (double[][])res mw.toArray(); // Перевод в массив double

3.5.3. Правила преобразования данных MATLAB и Java

В этом разделе рассмотрим правила преобразования данных от Java к MATLAB и обратно. Дополнительная информация о методах преобразовании данных имеется в разделах 3.3.1, 3.3.2.

Когда вызывается метод компонента MATLAB Builder для Java, то входные параметры, получаемые методом должны быть во внутреннем формате массива

MATLAB. Можно преобразовать их самостоятельно в пределах вызывающей программы, или передать параметры как типы данных Java, которые тогда автоматически преобразовываются механизмом вызова. Для преобразования данных самостоятельно (вручную), используются методы классов MWArray. Обычно используется комбинация ручного и автоматического преобразования.

Автоматическое преобразование в тип MATLAB

Когда параметр передается малое количество раз, то обычно эффективней передать его как примитивный тип или объект Java. В этом случае, вызывающий механизм преобразовывает данные в эквивалентный тип MATLAB, см. табл. 3.5.1. Например, любой из следующих типов Java будет автоматически преобразован в тип MATLAB double:

• Java примитив double;

• объект класса java.lang.Double.

Автоматическое преобразование данных показано в следующем фрагменте кода: result = M.makesqr(1, arg[0]);

В этом случае Java double передается как arg[0]. Приведем еще один пример: result = theFourier.plotfft(3, data, new Double(interval));

В этой инструкции Java, третий параметр имеет тип java.lang.Double. Согласно правилам преобразования, java.lang.Double автоматически преобразовывается в 1-на-1 массив MATLAB double.

Преобразование Java к MATLAB. Следующая таблица перечисляет правила автоматического преобразования типов данных Java в соответствующие типы MATLAB. Отметим, что эти правила относятся к скалярам, векторам, матрицам и многомерным массивам перечисленных типов.

Таблица 3.5.1 Правила преобразования Java к MATLAB

Тип Java Тип MATLAB

double

double

float

single

byte

int8

int

int32

short

int16

long

int64

char

char

boolean

logical

java.lang.Double

double

java.lang.Float

single

java.lang.Byte

int8

java.lang.Integer

int32

java.lang.Long

int64

java.lang.Short

int16

java.lang.Number

double

java.lang.Boolean

logical

java.lang.Character

char

java.lang.String

char

Замечание 1. Напомним, что объекты классов java.lang.Double и т.п. являются ссылочными, соответствующим простым типам данных. Эти объекты содержит единственное поле, тип которого является типом соответствующего примитива и имеют несколько методов, полезных для работы с соответствующими простыми типами.

Замечание 2. Строка Java преобразовывается в 1-на-Ы массив char с N, равном длине входной строки. Массив строк Java (String[]) преобразовывается М-на-N массив char. При этом М равно числу элементов во входном массиве, а N равно максимальной длине строк в массиве, с соответствующим дополнением нулями, когда представленные строки имеют различные длины. Массивы String более высокой размерности преобразуются аналогично.


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