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
ir
、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
内の要素の合計数と同じにします。この方法は、時間のかかる再割り当てを取り除くか、少なくとも削減します。
バージョン履歴
R2006a より前に導入