Реклама:

Эффективный способ создания разреженной матрицы состоит в использовании конструктора newSparse. Этот метод создает вещественный или комплексный разреженный массив MWNumericArray, с указанным числом строк, столбцов и максимального числа отличных от нуля элементов и инициализирует массив представленными данными. Это - статический метод класса и таким образом не должен вызываться ссылкой на экземпляр класса.

Приведем примеры построения разреженных массивов.

Пример. Построение разреженной матрицы x со следующими значениями:

x = [ 2 -1 0 0 -1 2 -1 0

0 -1 2 -1

0 0 -1 2 ]

При вызове newSparse передаются три массива: массив матричных данных (x), массив, содержащий индексы строк (rowindex) ненулевых элементов и массив индексов столбцов (colindex) ненулевых элементов. Число строк (4) и столбцов (4) также передают как тип (MWClassID.DOUBLE):

double[] x = { 2.0, -1.0, -1.0, 2.0, -1.0, /* Столбцеобразное */

-1.0, 2.0, -1.0, -1.0, 2.0 }; /* перечисление */ int[] rowindex = {1, 2, 1, 2, 3, 2, 3, 4, 3, 4}; int[] colindex = {1, 1, 2, 2, 2, 3, 3, 3, 4, 4}; MWNumericArray a =

MWNumericArray.newSparse(rowindex, colindex, x, 4, 4,

MWClassID.DOUBLE);

Пример. Построение массива без установки строк и столбцов. Можно передать только массивы строк и столбцов и тогда метод newSparse определяет число строк и столбцов разреженной матрицы из максимальных значений rowindex и colindex:

MWNumericArray a = MWNumericArray.newSparse(rowindex, colindex, x, MWClassID.DOUBLE);

Пример. Построение массива из полной матрицы. Можно также создать разреженный массив из полной матрицы используя newSparse. Следующий пример переписывает предыдущий пример, используя полную матрицу:

double[][] x = {{ 2.0, -1.0, 0.0, 0.0}, {-1.0, 2.0, -1.0, 0.0}, { 0.0 -1.0, 2.0, -1.0}, { 0.0, 0.0, -1.0, 2.0 }};

MWNumericArray a = MWNumericArray.newSparse(x, MWClassID.DOUBLE);

Пример. Создание комплексного двумерного разреженного MWNumericArray из вещественного и мнимого векторов double:

double[][] rData = {{ 0, 0, 0, 16, 0}, {71, 63, 32, 0, 0}};

double[][] iData = {{ 0, 0, 0, 41, 0}, { 0, 0, 32, 0, 2}};

MWNumericArray A =

MWNumericArray.newSparse(rData, iData, MWClassID.DOUBLE); System.out.println("A = " + A.toStringO);

После выполнения пример отображает следующее:

A =(2,1 71.0000

(2.2) 63.0000

(2.3) 32.0000 +32.0000i

(1.4) 16.0000 +41.0000i

(2.5) 0 + 2.0000i

3.3.3. Работа с логическими, символьными и массивами ячеек

Рассмотрим кратко логические, символьные и массивы ячеек. Работа с ними ана-логина работе с числовыми массивами. Более подробную информацию можно найти в документации MATLAB Java Builder.

Логические массивы. Класс MWLogicalArray обеспечивает доступ Java к логическому массиву MATLAB. Массив MWLogicalArrays может быть плотным или разреженным. Класс MWLogicalArray имеет ряд конструкторов и методов для создания логических массивов. Конструкторы:

• MWLogicalArray() - пустой логический массив;


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