Установите пространство памяти для ненулевых элементов
#include "matrix.h" void mxSetNzmax(mxArray *pm, mwSize nzmax);
#include "fintrf.h" subroutine mxSetNzmax(pm, nzmax) mwPointer pm mwSize nzmax
\pm
Указатель на разреженный mxArray
.
nzmax
Число элементов для mxCreateSparse
, чтобы выделить, чтобы содержать массивы, на которые указывает ir
, pr
и pi
(если это существует). Установите nzmax
, больше, чем или равный количеству ненулевых элементов в mxArray
, но установите его быть меньше чем или равным номеру времен строк количество столбцов. Если вы задаете значение nzmax
0
, то mxSetNzmax
устанавливает значение nzmax
к 1
.
Используйте mxSetNzmax
, чтобы присвоить новое значение полю nzmax
заданного разреженного mxArray
. Поле nzmax
содержит максимальное количество ненулевых элементов в разреженном mxArray
.
Число элементов в ir
, pr
и pi
(если это существует) массивы должно быть равно nzmax
. Поэтому после вызова mxSetNzmax
, необходимо изменить размер ir
, pr
и массивов pi
. Изменить размер одного из этих массивов:
Вызовите mxRealloc
с указателем на массив, установив размер на новое значение nzmax
.
Вызовите соответствующую стандартную программу mxSet
(mxSetIr
, mxSetPr
или mxSetPi
), чтобы установить новую область памяти как текущую.
Способы определить, насколько большой, чтобы сделать nzmax
:
Установите nzmax
, равный или немного больше, чем количество ненулевых элементов в разреженном mxArray
. Этот подход сохраняет драгоценное пространство "кучи".
Сделайте nzmax
равным общему количеству элементов в mxArray
. Этот подход устраняет (или, по крайней мере уменьшает), дорогие перераспределения.