Set storage space for nonzero elements
#include "matrix.h" void mxSetNzmax(mxArray *pm, mwSize nzmax);
#include "fintrf.h" subroutine mxSetNzmax(pm, nzmax) mwPointer pm mwSize nzmax
pm
Pointer to a sparse mxArray
.
nzmax
Number of elements for mxCreateSparse
to allocate to
hold the arrays pointed to by ir
, pr
,
and pi
(if it exists). Set nzmax
greater than or equal to the number of nonzero elements in the
mxArray
, but set it to be less than or equal to the
number of rows times the number of columns. If you specify an
nzmax
value of 0
, then
mxSetNzmax
sets the value of
nzmax
to 1
.
Use mxSetNzmax
to assign a new value to the
nzmax
field of the specified sparse mxArray
.
The nzmax
field holds the maximum number of nonzero elements in the
sparse mxArray
.
The number of elements in the ir
, pr
, and
pi
(if it exists) arrays must be equal to
nzmax
. Therefore, after calling mxSetNzmax
,
you must change the size of the ir
, pr
, and
pi
arrays. To change the size of one of these arrays:
Call mxRealloc
with a pointer to the
array, setting the size to the new value of nzmax
.
Call the appropriate mxSet
routine
(mxSetIr
, mxSetDoubles
, or
mxSetComplexDoubles
) to establish the new memory area
as the current one.
Ways to determine how large to make nzmax
are:
Set nzmax
equal to or slightly greater than the number of
nonzero elements in a sparse mxArray
. This approach conserves
precious heap space.
Make nzmax
equal to the total number of elements in an
mxArray
. This approach eliminates (or, at least reduces)
expensive reallocations.