外部インタフェース/API リファレンス | ![]() ![]() |
C 言語表示
#include "matrix.h" void mxSetNzmax(mxArray *array_ptr, int nzmax);
引数
array_ptr
スパースなmxArray
のポインタ。
nzmax
ir
, pr
, (存在すれば)pi
によって指し示される配列を保持するためにmxCreateSparse
が割り当てる要素数。nzmax
は、mxArray
内の非ゼロ要素数以上で、行数と列数の積以下の値を設定します。nzmax
の値を0と指定した場合、mxSetNzmax
はnzmax
の値を1に設定します。
詳細
mxSetNzmax
を用いて、指定したスパースなmxArray
のnzmax
フィールドに新たな値を割り当てます。nzmax
フィールドには、スパースなmxArray
内の取りうる最大の非ゼロ要素数が保持されます。
ir
, pr
, (存在すれば)pi
配列内の要素数は、nzmax
.と等しくなければなりません。そのため、mxSetNzmax
を呼び出した後で、ir
, pr
, pi
配列のサイズを変更しなければなりません。これらの配列のうちの1つのサイズを変更するには、以下のようにします。
mxCalloc
を呼び出し、n
にnzmax
の新たな値を設定します。memcpy
を呼び出し、古い配列の内容をStep 1で割り当てた新たな領域にコピーします。mxFree
を呼び出し、古い配列が占有しているメモリを開放します。mxSet
ルーチン(mxSetIr
, mxSetPr
, mxSetPi
)を呼び出して、新たなメモリ領域をカレントのメモリ領域とします。
nzmax
の大きさを決定するためには、2つの方法があります。
nzmax
をスパースなmxArray
内の非ゼロ要素数と等しいか、わずかに大きく設定します。この方法は、貴重なヒープ領域を保存します。nzmax
をmxArray
内の要素の総数と等しくします。この方法は、メモリを浪費する再割り当てを削除(または少なくとも削減)します。例題
examples
ディレクトリのmx
サブディレクトリのmxsetnzmax.c
を参照してください。
参考
![]() | mxSetName | mxSetPi | ![]() |