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 - mxCreateSparseto allocate to hold the arrays pointed to by- ir,- pr, and- pi(if it exists). Set- nzmaxgreater 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- nzmaxvalue of- 0, then- mxSetNzmaxsets the value of- nzmaxto- 1.
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 - mxReallocwith a pointer to the array, setting the size to the new value of- nzmax.
- Call the appropriate - mxSetroutine (- mxSetIr,- mxSetDoubles, or- mxSetComplexDoubles) to establish the new memory area as the current one.
Ways to determine how large to make nzmax are:
- Set - nzmaxequal to or slightly greater than the number of nonzero elements in a sparse- mxArray. This approach conserves precious heap space.
- Make - nzmaxequal to the total number of elements in an- mxArray. This approach eliminates (or, at least reduces) expensive reallocations.
Examples
To open an example, type:
edit([fullfile(matlabroot,"extern","examples","mx","filename")]);
where filename is:
Version History
Introduced before R2006a