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 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`.

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:

1. Call `mxRealloc` with a pointer to the array, setting the size to the new value of `nzmax`.

2. 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.

Examples

See these examples in `matlabroot/extern/examples/mx`:

Version History

Introduced before R2006a