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 массив. 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)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).

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

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

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

Примеры

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

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

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