mxSetIr (C and Fortran)

Массив ir разреженного массива

Синтаксис C

#include "matrix.h"
void mxSetIr(mxArray *pm, mwIndex *ir);

Синтаксис языка ФОРТРАН

#include "fintrf.h"
subroutine mxSetIr(pm, ir)
mwPointer pm, ir

Аргументы

pm

Указатель на разреженный mxArray

ir

Указатель на ir массив. ir массив должен быть отсортирован в порядке развертывания по столбцам.

Описание

Используйте mxSetIr задавать ir массив разреженного mxArray. ir массив является массивом целых чисел; длина ir массив равняется значению nzmax, устройство хранения данных, выделенное для разреженного массива или nnz, количество ненулевых элементов матрицы.

Каждый элемент в ir массив указывает на строку (возмещенный 1), в котором может быть найден ненулевой элемент. (jc массив является индексом, который косвенно задает столбец, где ненулевые элементы могут быть найдены. Смотрите mxSetJc для получения дополнительной информации о jc.)

Например, предположите, что вы создаете 7- 3 разреженный mxArray названный Sparrow содержа шесть ненулевых элементов путем ввода:

Sparrow = zeros(7,3);
Sparrow(2,1) = 1;
Sparrow(5,1) = 1;
Sparrow(3,2) = 1;
Sparrow(2,3) = 2;
Sparrow(5,3) = 1;
Sparrow(6,3) = 1;
Sparrow = sparse(Sparrow);

pr массив содержит действительные данные для разреженной матрицы, который в Sparrow пять 1 с и 2. Если существуют какие-либо ненулевые мнимые данные, то это находится в pi массив.

Индекс

ir

PR

jc

Комментарии

(2,1)110

Столбец 1; ir 1, потому что строка равняется 2.

(5,1)412

Столбец 1; ir 4, потому что строка равняется 5.

(3,2)213

Столбец 2; ir 2, потому что строка равняется 3.

(2,3)126

Столбец 3; ir 1, потому что строка равняется 2.

(5,3)41 

Столбец 3; ir 4, потому что строка равняется 5.

(6,3)51 

Столбец 3; ir 5, потому что строка равняется 6.

Заметьте как каждый элемент ir массив всегда является 1 меньше, чем строка соответствующего ненулевого элемента. Например, первый ненулевой элемент находится в строке 2; поэтому, первый элемент в ir 1 (то есть, 2 – 1). Второй ненулевой элемент находится в строке 5; поэтому, второй элемент в ir 4 (5 – 1).

ir массив должен быть в порядке развертывания по столбцам. ir массив должен задать положения строки в столбце 1 (если таковые имеются) сначала, затем положения строки в столбце 2 (если таковые имеются) второй, и так далее, через столбец N. В рамках каждого столбца положение 1 строки должно появиться перед положением 2 строки и так далее.

mxSetIr не сортирует ir массив для вас; необходимо задать ir массив, который уже сортируется.

Эта функция не освобождает памяти, выделенной для существующих данных, которые это перемещает. Чтобы освободить существующую память, вызовите mxFree на указателе, возвращенном mxGetIr прежде чем вы вызовете mxSetIr.

Примеры

Смотрите эти примеры в matlabroot/extern/examples/mx:

Смотрите эти примеры в matlabroot/extern/examples/mex:

Смотрите также

mxCreateSparse, mxGetIr, mxGetJc, mxSetJc, mxFreenzmaxnnz

Представлено до R2006a