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