mxGetFieldNameByNumber (C および Fortran)
構造体配列からフィールド名へのポインター (フィールド番号を指定)
C 構文
#include "matrix.h" const char *mxGetFieldNameByNumber(const mxArray *pm, int fieldnumber);
Fortran 構文
#include "fintrf.h" character*(*) mxGetFieldNameByNumber(pm, fieldnumber) mwPointer pm integer*4 fieldnumber
引数
- pm
- 構造体 - mxArrayへのポインター
- fieldnumber
- 目的のフィールドの位置。たとえば C では、最初のフィールドの名前を取得するには、 - fieldnumberを 0 に設定します。2 番目のフィールドの名前を取得するには、- fieldnumberを 1 に設定します (以下同様)。Fortan では、最初のフィールドの名前を取得するには、- fieldnumberを- 1に設定します。2 番目のフィールドの名前を取得するには、- fieldnumberを- 2に設定します (以下同様)。
戻り値
成功した場合、n 番目のフィールド名へのポインター。失敗した場合は C では NULL (Fortran では 0) を返します。よくある失敗の原因には、以下があります。
- 構造体 - mxArrayを指していない配列ポインター- pmを指定している。- mxIsStructを呼び出して、- pmが構造体- mxArrayを指しているかどうかを判断します。
- fieldnumberの値を構造体- mxArrayのフィールド数の範囲外で指定している。C では、- fieldnumber0 は最初のフィールドを表し、- fieldnumber- N-1は最後のフィールドを表します。ここで、- Nは構造体- mxArray内のフィールドの数です。Fortran では、- fieldnumber- 1は最初のフィールドを表し、- fieldnumber- Nは最後のフィールドを表します。
説明
mxGetFieldNameByNumber を呼び出して、任意の構造体 mxArray 内のフィールドの名前を取得します。mxGetFieldNameByNumber の一般的な用途として、ループ内で呼び出して、任意の mxArray 内の全フィールドの名前を取得することがあげられます。 
次のように初期化される MATLAB® 構造体を考えます。
patient.name = 'John Doe'; patient.billing = 127.00; patient.test = [79 75 73; 180 178 177.5; 220 210 205];
C では、フィールド番号 0 は name フィールドを表し、フィールド番号 1 は billing フィールドを表し、フィールド番号 2 は test フィールドを表します。0、1、または 2 以外のフィールド番号を指定すると、mxGetFieldNameByNumber は NULL を返します。
Fortan では、フィールド番号 1 は name フィールドを表し、フィールド番号 2 は billing フィールドを表し、フィールド番号 3 は test フィールドを表します。1、2、または 3 以外のフィールド番号を指定すると、mxGetFieldNameByNumber は 0 を返します。 
例
例を開くには、次のように入力します。
edit([fullfile(matlabroot,"extern","examples","refbook","filename")]);
ここで filename は、次のようになります。
例を開くには、次のように入力します。
edit([fullfile(matlabroot,"extern","examples","mx","filename")]);
ここで filename は、次のようになります。
例を開くには、次のように入力します。
edit([fullfile(matlabroot,"extern","examples","mex","filename")]);
ここで filename は、次のようになります。
参考
mxGetField, mxGetFieldByNumber, mxGetFieldNumber, mxGetNumberOfFields, mxIsStruct, mxSetField, mxSetFieldByNumber
バージョン履歴
R2006a より前に導入