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 は最初のフィールドを表し、fieldnumberN-1は最後のフィールドを表します。ここで、Nは構造体mxArray内のフィールドの数です。Fortran では、fieldnumber1は最初のフィールドを表し、fieldnumberNは最後のフィールドを表します。
説明
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 より前に導入