ИК-массив разреженного массива
#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) | 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).
ir массив должен быть в порядке «» основной столбец «». ir массив должен сначала определять позиции строк в столбце 1 (если есть), затем позиции строк в столбце 2 (если есть) во втором и так далее, через столбец N. В каждом столбце позиция строки 1 должна отображаться перед позицией строки 2 и так далее.
mxSetIr не сортирует ir массив для вас; необходимо указать ir массив, который уже отсортирован.
Эта функция не освобождает память, выделенную для существующих данных, которые она вытесняет. Чтобы освободить существующую память, позвоните mxFree на указателе, возвращенном mxGetIr перед звонком mxSetIr.
См. эти примеры в разделе :matlabroot/extern/examples/mx
См. эти примеры в разделе :matlabroot/extern/examples/mex