| 外部インタフェース/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 | ![]() |