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へのポインター。nzmaxir、prおよびpi(存在する場合) が指している配列を格納するためにmxCreateSparseが割り当てる要素数。mxArray内の非ゼロ要素の数以上になるようにnzmaxを設定しますが、行数に列数を掛けた数以下になるようにします。0のnzmax値を指定した場合、mxSetNzmaxはnzmaxの値を1に設定します。
説明
mxSetNzmax を使用して、指定されたスパース mxArray の nzmax フィールドに新しい値を割り当てます。nzmax フィールドは、スパース mxArray 内の非ゼロ要素の最大数を格納します。
ir、pr、および pi (存在する場合) の配列内の要素数は、nzmax と等しくなければなりません。したがって、mxSetNzmax を呼び出した後に、配列 ir、pr、および pi のサイズを変更しなければなりません。これらの配列のいずれかのサイズを変更するには、以下の手順に従います。
配列へのポインターを使って
mxReallocを呼び出し、サイズをnzmaxの新しい値に設定します。適切な
mxSetルーチン (mxSetIr、mxSetDoubles、またはmxSetComplexDoubles) を呼び出して、新しいメモリ領域を現在の領域として確立します。
nzmax のサイズを決定する方法は以下のとおりです。
nzmaxをスパースmxArray内の非ゼロ要素の数と同じか若干大きくします。この方法は、貴重なヒープ領域を節約します。nzmaxをmxArray内の要素の合計数と同じにします。この方法は、時間のかかる再割り当てを取り除くか、少なくとも削減します。
例
例を開くには、次のように入力します。
edit([fullfile(matlabroot,"extern","examples","mx","filename")]);
ここで filename は、次のようになります。
バージョン履歴
R2006a より前に導入