mxSetNzmax (C and Fortran)
Set storage space for nonzero elements
C Syntax
#include "matrix.h" void mxSetNzmax(mxArray *pm, mwSize nzmax);
Fortran Syntax
#include "fintrf.h" subroutine mxSetNzmax(pm, nzmax) mwPointer pm mwSize nzmax
Arguments
pm
Pointer to a sparse
mxArray
.nzmax
Number of elements for
mxCreateSparse
to allocate to hold the arrays pointed to byir
,pr
, andpi
(if it exists). Setnzmax
greater than or equal to the number of nonzero elements in themxArray
, but set it to be less than or equal to the number of rows times the number of columns. If you specify annzmax
value of0
, thenmxSetNzmax
sets the value ofnzmax
to1
.
Description
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 ofnzmax
.Call the appropriate
mxSet
routine (mxSetIr
,mxSetDoubles
, ormxSetComplexDoubles
) 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 sparsemxArray
. This approach conserves precious heap space.Make
nzmax
equal to the total number of elements in anmxArray
. This approach eliminates (or, at least reduces) expensive reallocations.
Version History
Introduced before R2006a