Установите пространство памяти для ненулевых элементов
#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
, mxSetDoubles
, или mxSetComplexDoubles
) установить новую область памяти как текущую.
Способы определить, как большой, чтобы сделать nzmax
:
Установите nzmax
равняйтесь или немного больше, чем количество ненулевых элементов в разреженном mxArray
. Этот подход сохраняет драгоценное пространство "кучи".
Сделайте nzmax
равняйтесь общему количеству элементов в mxArray
. Этот подход устраняет (или, по крайней мере, уменьшает), дорогие перераспределения.