Массив JC разреженного массива
#include "matrix.h" void mxSetJc(mxArray *pm, mwIndex *jc);
#include "fintrf.h" subroutine mxSetJc(pm, jc) mwPointer pm, jc
pmУказатель на разреженную mxArray
jcУказатель на jc массив
Использовать mxSetJc чтобы задать новую jc массив для разреженного mxArray. The jc массив является целочисленным массивом, имеющим n+1 элементы, где n количество столбцов в разреженном mxArray.
Если на j1-й столбец разреженного mxArray имеет любые ненулевые элементы, тогда:
jc[j] - индекс в ir, pr, и pi (если он существует) первого ненулевого элемента в jth столбца.
jc[j+1]-1 - индекс последнего ненулевого элемента в jth столбца.
Для j1й столбец разреженной матрицы, jc[j] - общее количество ненулевых элементов во всех предыдущих столбцах.
Количество ненулевых элементов в j1-й столбец разреженного mxArray является:
jc[j+1] - jc[j];
Для j1-й столбец разреженного mxArray, jc[j] - общее количество ненулевых элементов во всех предыдущих столбцах. Последний элемент jc массив, jc[количество столбцов ], равно nnz, которое является количеством ненулевых элементов во всем разреженном mxArray.
Например, рассмотрим 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);
В следующей таблице перечислены содержимое ir, jc, и pr массивы.
|
Индекс |
ir |
PR |
jc |
Комментарий |
|---|---|---|---|---|
|
|
|
|
|
Столбец 1 содержит два ненулевых элемента с строками, обозначенными |
|
|
|
|
|
Столбец 2 содержит один ненулевой элемент с строкой, обозначенной |
|
|
|
|
|
Столбец 3 содержит три ненулевых элемента с строками, обозначенными |
|
|
|
|
|
Всего шесть ненулевых элементов. |
|
|
|
| ||
|
|
|
|
Как пример намного более разреженного mxArray, рассмотрим 1000-by- 8 разреженные mxArray именованные Spacious содержащий только три ненулевых элемента. The ir, pr, и jc массивы содержат значения, перечисленные в этой таблице.
|
Индекс |
ir |
PR |
jc |
Комментарий |
|---|---|---|---|---|
|
|
|
|
|
Столбец 1 не содержит ненулевых элементов. |
|
|
|
|
|
Столбец 2 содержит один ненулевой элемент с строкой, обозначенной |
|
|
|
|
|
Столбец 3 содержит один ненулевой элемент с строкой, обозначенной |
|
|
Столбец 4 не содержит ненулевых элементов. | |||
|
|
Столбец 5 содержит один ненулевой элемент с строкой, обозначенной | |||
|
|
Столбец 6 не содержит ненулевых элементов. | |||
|
|
Столбец 7 не содержит ненулевых элементов. | |||
|
|
Столбец 8 не содержит ненулевых элементов. | |||
|
|
Существует три ненулевых элемента во всех. |
Эта функция не освобождает память, выделенную для существующих данных, которые она перемещает. Чтобы освободить существующую память, позвоните mxFree на указатель, возвращенный mxGetJc перед вызовом mxSetJc.
См. эти примеры в :matlabroot/ extern/examples/mx
См. эти примеры в :matlabroot/ extern/examples/mex