Установите пространство памяти для ненулевых элементов
#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
. The nzmax
поле содержит максимальное количество ненулевых элементов в разреженном mxArray
.
Количество элементов в ir
, pr
, и pi
(если он существует) массивы должны быть равны nzmax
. Поэтому после вызова mxSetNzmax
, необходимо изменить размер ir
, pr
, и pi
массивы. Чтобы изменить размер одного из следующих массивов:
Звонить mxRealloc
с указателем на массив, задав размер нового значения nzmax
.
Вызовите соответствующую mxSet
стандартная программа (mxSetIr
, mxSetDoubles
, или mxSetComplexDoubles
), чтобы установить новую область памяти как текущую.
Способы определить, насколько большие nzmax
являются:
Задайте nzmax
равным или немного больше, чем количество ненулевых элементов в разреженном mxArray
. Этот подход сохраняет драгоценное пространство кучки.
Делайте nzmax
равным общему количеству элементов в mxArray
. Этот подход устраняет (или, по крайней мере, уменьшает) дорогие перераспределения.