Реклама:

Преобразование типов данных вручную

Преобразование данных из Java в типы MATLAB можно также сделать самостоятельно в пределах программного кода. Для этого используются конструкторы массивов MATLAB, описание которых дано в параграфе 3.5. Преобразование данных из MATLAB в типы Java делается всегда вручную. Для этого имеется ряд методов преобразования, описание которых также приведено в параграфе 3.5.

Преобразование типов Java в типы MATLAB. Покажем на примерах использование конструкторов для получения массива MATLAB из данных Java. В следующем примере кода вызывается конструктор класса MWNumericArray для преобразования double Java в 16-разрядный целочисленный 1-на-1 массив

MATLAB:

double Adata = 24;

MWNumericArray A = new MWnumericArray(Adata, MWClassID.INT16);

Если не указывать в конструкторе MWClassID, то он будет действовать по умолчанию в соответствии с табл. 3.5.1.

Следующий фрагмент кода программы getmagic.java раздела 3.2.5 показывает, как параметр класса java.lang.Double преобразовывается в тип double MWNumericArray, который может использоваться m-функцией без дальнейшего преобразования. MWNumericArray n = null;

n = new MWNumericArray(Double.valueOf(args[0]),MWClassID.DOUBLE); result = theMagic.makesqr(1, n);

Следующий пример показывает создание 32-разрядного целочисленного массива 3-на-6 типа MWNumericArray из целочисленного массива Java:

int[][] Adata = {{ 1, 2, 3, 4, 5, 6},

{ 7, 8, 9, 10, 11, 12},

{13, 14, 15, 16, 17, 18}}; MWNumericArray A = new MWNumericArray(Adata, MWClassID.INT32);

Преобразование типов MATLAB в типы Java. Для преобразования массива MATLAB в массив указанного примитивного типа данных, такого как float или int, используются следующие методы toTypeArray:

toByteArray, toDoubleArray, toFloatArray, tolntArray,

toLongArray, toShortArray, tolmagArray, tolmagByteArray,

tolmagDoubleArray, tolmagFloatArray, tolmaglntArray, tolmagLongArray, tolmagShortArray.

Эти методы возвращают массив Java, соответствующий примитивному типу в имени метода. Возвращенный массив имеет ту же самую размерность как и основной массив MATLAB и указанный в методе тип. Например, если вызывается toShortArray, то возвращается массив типа short, независимо от типа данных в основном массиве. Поэтому при выполнении преобразования возможно усечение или другая потеря точности. Например, если вызывается toFloatArray на экземпляре класса MWArray, содержащего данные с двойной точностью, значения double усекаются до значений float - значений с одинарной точностью. Рекомендуемое соответствие типов указано в табл. 3.5.2. Эти методы могут также быть полезными в определении типов в массиве Java, когда размерность вещественного или комплексного массива MWArray известна, но тип данных - нет.

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

// вызов скомпилированной m-функции

results = myobject.myfunction(2); // известно, что первый вывод является числовой матрицей


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