Массив 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. jc массив является целочисленным массивом, имеющим n+1 элементы, где n количество столбцов в разреженном mxArray.
Если jстолбец th разреженного mxArray имеет любые ненулевые элементы, затем:
jc[j] индекс в ir, pr, и pi (если это существует) первого ненулевого элемента в jстолбец th.
jc[j+1]-1 индекс последнего ненулевого элемента в jстолбец th.
Для jстолбец th разреженной матрицы, jc[j] общее количество ненулевых элементов во всех предыдущих столбцах.
Количество ненулевых элементов в jстолбец th разреженного mxArray :
jc[j+1] - jc[j];
Для jстолбец th разреженного mxArray, jc[j] общее количество ненулевых элементов во всех предыдущих столбцах. Последний элемент jc массив, jc[количество columns], равно nnz, который является количеством ненулевых элементов в целом разреженном mxArray.
Например, рассмотрите 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);
В следующей таблице перечислены содержимое ir, jc, и pr массивы.
|
Индекс |
ir |
PR |
jc |
Комментарий |
|---|---|---|---|---|
|
(2,1) |
1 |
1 |
0 |
Столбец 1 содержит два ненулевых элемента со строками, определяемыми |
|
(5,1) |
4 |
1 |
2 |
Столбец 2 содержит один ненулевой элемент со строкой, определяемой |
|
(3,2) |
2 |
1 |
3 |
Столбец 3 содержит три ненулевых элемента со строками, определяемыми |
|
(2,3) |
1 |
2 |
6 |
Существует шесть ненулевых элементов всего. |
|
(5,3) |
4 |
1 | ||
|
(6,3) |
5 |
1 |
Как пример намного более разреженного mxArray, рассмотрите 1000- 8 разреженный mxArray названный Spacious содержа только три ненулевых элемента. ir, pr, и jc массивы содержат значения, перечисленные в этой таблице.
|
Индекс |
ir |
PR |
jc |
Комментарий |
|---|---|---|---|---|
|
(73,2) |
72 |
1 |
0 |
Столбец 1 не содержит ненулевых элементов. |
|
(50,3) |
49 |
1 |
0 |
Столбец 2 содержит один ненулевой элемент со строкой, определяемой |
|
(64,5) |
63 |
1 |
1 |
Столбец 3 содержит один ненулевой элемент со строкой, определяемой |
|
2 |
Столбец 4 не содержит ненулевых элементов. | |||
|
2 |
Столбец 5 содержит один ненулевой элемент со строкой, определяемой | |||
|
3 |
Столбец 6 не содержит ненулевых элементов. | |||
|
3 |
Столбец 7 не содержит ненулевых элементов. | |||
|
3 |
Столбец 8 не содержит ненулевых элементов. | |||
|
3 |
Существует три ненулевых элемента всего. |
Эта функция не освобождает памяти, выделенной для существующих данных, которые это перемещает. Чтобы освободить существующую память, вызовите mxFree на указателе, возвращенном mxGetJc прежде чем вы вызовете mxSetJc.
Смотрите эти примеры в :matlabroot/extern/examples/mx
Смотрите эти примеры в :matlabroot/extern/examples/mex