Массив ir разреженного массива
#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