Массив ir разреженного массива
#include "matrix.h" void mxSetIr(mxArray *pm, mwIndex *ir);
#include "fintrf.h" subroutine mxSetIr(pm, ir) mwPointer pm, ir
pmУказатель на разреженную mxArray
irУказатель на ir массив. The ir массив должен быть отсортирован в основном порядке столбцов.
Использовать mxSetIr для задания ir массив разреженного mxArray. The ir массив является массивом целых чисел; длина ir массив равен значению nzmax, хранилище, выделенное для разреженного массива, или nnz, количество ненулевых элементов матрицы.
Каждый элемент в ir массив указывает строку (смещение на 1), в которой можно найти ненулевой элемент. (The jc массив является индексом, который косвенно задает столбец, в котором можно найти ненулевые элементы. Посмотрите mxSetJc для получения дополнительной информации о jc.)
Например, предположим, что вы создаете 7-by- 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);
The pr массив содержит действительные данные для разреженной матрицы, которая в Sparrow является пятью 1s и одним 2. Если есть ненулевые мнимые данные, то это в pi массив.
|
Индекс |
ir |
PR |
jc |
Комментарии |
|---|---|---|---|---|
(2,1) | 1 | 1 | 0 |
Столбец 1; |
(5,1) | 4 | 1 | 2 |
Столбец 1; |
(3,2) | 2 | 1 | 3 |
Столбец 2; |
(2,3) | 1 | 2 | 6 |
Столбец 3; |
(5,3) | 4 | 1 |
Столбец 3; | |
(6,3) | 5 | 1 |
Столбец 3; |
Заметьте, как каждый элемент ir массив всегда на 1 меньше, чем строка соответствующего ненулевого элемента. Для образца первый ненулевой элемент находится в строке 2; поэтому первый элемент в ir равен 1 (то есть 2 - 1). Второй ненулевой элемент находится в строке 5; поэтому второй элемент в ir равен 4 (5 - 1).
The ir массив должен быть в основном порядке. The ir массив должен сначала определить положения строк в столбце 1 (если таковые имеются), затем положения строк в столбце 2 (если есть) и так далее, через столбец N. В каждом столбце положение строк 1 должно находиться перед позицией строк 2 и так далее.
mxSetIr не сортирует ir массив для вас; вы должны задать ir массив, который уже отсортирован.
Эта функция не освобождает память, выделенную для существующих данных, которые она перемещает. Чтобы освободить существующую память, позвоните mxFree на указатель, возвращенный mxGetIr перед вызовом mxSetIr.
См. эти примеры в :matlabroot/ extern/examples/mx
См. эти примеры в :matlabroot/ extern/examples/mex