Массив 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