外部インタフェース/API リファレンス | ![]() ![]() |
与えられたフィールド名とインデックスから構造体配列のフィールド値を設定
C 言語表示
#include "matrix.h" void mxSetField(mxArray *array_ptr, int index, const char *field_name, mxArray *value);
引数
array_ptr
構造体mxArray
のポインタ。array_ptr
が構造体のmxArray
を指すポインタであるかどうかを決定するには、mxIsStruct
を呼び出してください。.
index
mxArray
の1番目の要素のインデックスは0、2番目の要素のインデックスは1、最後の要素のインデックスはN-1
です。ここで、N
は構造体mxArray
内の要素の総数です。インデックスの計算の詳細は、mxCalcSingleSubscript
を参照してください。
field_name
mxGetFieldNameByNumber
またはmxGetFieldNumber
を呼び出してください。
value
mxArray
のポインタ。
詳細
mxSetField
を用いて、指定したフィールドの指定した要素にvalue
を割り当てます。擬似的なCの書き方では、mxSetField
はつぎの割り当てを行います。
array_ptr[index].field_name = value;
与えられた位置に既に値が存在する場合は、ユーザが指定したvalue
のポインタは、以前の値のポインタを上書きします。しかし、mxSetField
は以前の値のポインタが指していたダイナミックメモリを開放しません。そのため、mxSetField
を呼び出す直前または直後に、以前のmxArray
を開放すべきです。
注意
MEX-ファイルの入力は、定数でリードオンリーのmxArray で、変更できません。mxSetCell* またはmxSetField* を使ってMATLABから渡される引数のフィールドまたはセルを変更すると、予期しない結果を生じます。 |
mxSetField(pa, index, "field_name", new_value_pa);
field_num = mxGetFieldNumber(pa, "field_name"); mxSetFieldByNumber(pa, index, field_num, new_value_pa);
例題
examples
ディレクトリのmx
サブディレクトリのmxcreatestructarray.c
を参照してください。
参考
mxCreateStructArray
, mxCreateStructMatrix
, mxGetField
, mxGetFieldByNumber
, mxGetFieldNameByNumber
, mxGetFieldNumber
, mxGetNumberOfFields
, mxIsStruct
, mxSetFieldByNumber
![]() | mxSetDimensions | mxSetFieldByNumber | ![]() |