mxSetNzmax (C и Фортран)

Установите пространство памяти для ненулевых элементов

Синтаксис C

#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. Поле nzmax содержит максимальное количество ненулевых элементов в разреженном mxArray.

Число элементов в ir, pr и pi (если это существует) массивы должно быть равно nzmax. Поэтому после вызова mxSetNzmax, необходимо изменить размер ir, pr и массивов pi. Изменить размер одного из этих массивов:

  1. Вызовите mxRealloc с указателем на массив, установив размер на новое значение nzmax.

  2. Вызовите соответствующую стандартную программу mxSet (mxSetIr, mxSetPr или mxSetPi), чтобы установить новую область памяти как текущую.

Способы определить, насколько большой, чтобы сделать nzmax:

  • Установите nzmax, равный или немного больше, чем количество ненулевых элементов в разреженном mxArray. Этот подход сохраняет драгоценное пространство "кучи".

  • Сделайте nzmax равным общему количеству элементов в mxArray. Этот подход устраняет (или, по крайней мере уменьшает), дорогие перераспределения.

Примеры

См. следующие примеры в matlabroot / extern / examples / mx.

Смотрите также

mxGetNzmax, mxRealloc

Представлено до R2006a

Была ли эта тема полезной?