Main Content

mxSetNzmax (C および Fortran)

非ゼロ要素のストレージ スペースの設定

C 構文

#include "matrix.h"
void mxSetNzmax(mxArray *pm, mwSize nzmax);

Fortran 構文

#include "fintrf.h"
subroutine mxSetNzmax(pm, nzmax)
mwPointer pm
mwSize nzmax

引数

pm

スパース mxArray へのポインター。

nzmax

irpr および pi (存在する場合) が指している配列を格納するために mxCreateSparse が割り当てる要素数。mxArray 内の非ゼロ要素の数以上になるように nzmax を設定しますが、行数に列数を掛けた数以下になるようにします。0nzmax 値を指定した場合、mxSetNzmaxnzmax の値を 1 に設定します。

説明

mxSetNzmax を使用して、指定されたスパース mxArraynzmax フィールドに新しい値を割り当てます。nzmax フィールドは、スパース mxArray 内の非ゼロ要素の最大数を格納します。

irpr、および pi (存在する場合) の配列内の要素数は、nzmax と等しくなければなりません。したがって、mxSetNzmax を呼び出した後に、配列 irpr、および pi のサイズを変更しなければなりません。これらの配列のいずれかのサイズを変更するには、以下の手順に従います。

  1. 配列へのポインターを使って mxRealloc を呼び出し、サイズを nzmax の新しい値に設定します。

  2. 適切な mxSet ルーチン (mxSetIrmxSetDoubles、または mxSetComplexDoubles) を呼び出して、新しいメモリ領域を現在の領域として確立します。

nzmax のサイズを決定する方法は以下のとおりです。

  • nzmax をスパース mxArray 内の非ゼロ要素の数と同じか若干大きくします。この方法は、貴重なヒープ領域を節約します。

  • nzmaxmxArray 内の要素の合計数と同じにします。この方法は、時間のかかる再割り当てを取り除くか、少なくとも削減します。

matlabroot/extern/examples/mx の次の例を参照してください。

バージョン履歴

R2006a より前に導入