| 外部インタフェース/API リファレンス | ![]() |
与えられたフィールド名と構造体配列のインデックスからフィールドの値を取得
C 言語表示
#include "matrix.h" mxArray *mxGetField(const mxArray *array_ptr, int index, const char *field_name);
index
mxArrayの最初の要素は0のindexをもち、2番目の要素は1のindexをもち、最後の要素はN-1のindexをもちます。ここで、N は構造体mxArrayの要素の総数です。
field_name
戻り値
成功した場合は、指定したfield_nameの指定したフィールドのmxArrayのポインタ。そうでない場合は、NULLを出力します。1つの可能性として、指定したフィールドに割り当てられた値がないことが考えられます。それ以外の可能性として、値はあっても呼び出しが失敗することが考えられます。一般的な失敗の原因は以下の通りです。
mxArrayを指し示さないarray_ptrを指定。array_ptrが構造体のmxArrayを指すかどうかを決定するためには、mxIsStructを呼び出してください。mxArrayの最後の要素を越えた要素に範囲外のindexを指定。たとえば、10個の要素を含む構造体mxArrayに対して、9よりも大きいindexは指定できません。field_nameを指定。存在するfield nameを取得するためには、mxGetFieldNameByNumberまたはmxGetFieldNumberを呼び出してください。mxArrayを保持するヒープ領域が不足。詳細
mxGetField を呼び出すことによって、指定したフィールドの指定した要素にある値を取得します。mxGetFieldは、擬似Cの用法でつぎの値を出力します。
array_ptr[index].field_name
mxGetFieldByIndexは、mxGetFieldと同じです。これらの関数は、両方共同じ値を出力します。唯一の違いは、フィールドの指定方法です。mxGetFieldByIndexはfield_numを第三引数とし、mxGetFieldはfield_nameを第三引数としています。
注意
MEX-ファイルの入力は、リードオンリーのmxArrayの定数で、変更できません。mxSetCell*またはmxSetField*を使ってMATLABから渡される引数のセルまたはフィールドを変更すると、予期しない結果になることがあります。 |
mxGetField(pa, index, "field_name");
field_num = mxGetFieldNumber(pa, "field_name"); mxGetFieldByNumber(pa, index, field_num);
参考
mxGetFieldByNumber, mxGetFieldNameByNumber, mxGetFieldNumber, mxGetNumberOfFields, mxIsStruct, mxSetField, mxSetFieldByNumber
| mxGetEps | mxGetFieldByNumber | ![]() |