Массив 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