exponenta event banner

mxSetIr (C и Fortran)

ИК-массив разреженного массива

Синтаксис C

#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)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).

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

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

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

Примеры

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

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

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