Main Content

mxGetFieldNumber (C および Fortran)

構造体配列内のフィールド番号 (フィールド名を指定)

C 構文

#include "matrix.h"
int mxGetFieldNumber(const mxArray *pm, const char *fieldname);

Fortran 構文

#include "fintrf.h"
integer*4 mxGetFieldNumber(pm, fieldname)
mwPointer pm
character*(*) fieldname

引数

pm

構造体 mxArray へのポインター

fieldname

構造体 mxArray 内のフィールドの名前

戻り値

成功した場合、指定された fieldname のフィールド番号。C では、最初のフィールドは 0 のフィールド数をもち、2 番目のフィールドは 1 のフィールド数をもちます (以下同様)。Fortan では、最初のフィールドは 1 のフィールド数をもち、2 番目のフィールドは 2 のフィールド数をもちます (以下同様)。失敗した場合は C では -1 (Fortran では 0) を返します。よくある失敗の原因には、以下があります。

  • 構造体 mxArray を指していない配列ポインター pm を指定している。mxIsStruct を呼び出して、pm が構造体 mxArray を指しているかどうかを判断します。

  • 存在しないフィールドの fieldname を指定している。

説明

フィールドの名前がわかっていても、そのフィールド番号がわからない場合は、mxGetFieldNumber を呼び出します。反対に、フィールド番号がわかっていても、そのフィールド名がわからない場合は、mxGetFieldNameByNumber を呼び出します。

たとえば、次のように初期化される MATLAB® 構造体を考えます。

patient.name = 'John Doe';
patient.billing = 127.00;
patient.test = [79 75 73; 180 178 177.5; 220 210 205];

C では、name フィールドは 0 のフィールド番号、billing フィールドは 1 のフィールド番号、test フィールドは 2 のフィールド番号をもっています。mxGetFieldNumber を呼び出して、namebilling、または test 以外のフィールド名を指定すると、mxGetFieldNumber-1 を返します。

11 列の構造体がある場合、以下を呼び出すことは、

mxGetField(pa, index, "field_name");

以下を呼び出すことと等価です。

field_num = mxGetFieldNumber(pa, "field_name");
mxGetFieldByNumber(pa, index, field_num);

ここで index0 です。

Fortan では、name フィールドは 1 のフィールド番号、billing フィールドは 2 のフィールド番号、test フィールドは 3 のフィールド番号をもっています。mxGetFieldNumber を呼び出して、namebilling、または test 以外のフィールド名を指定すると、mxGetFieldNumber0 を返します。

11 列の構造体がある場合、以下を呼び出すことは、

mxGetField(pm, index, 'fieldname');

以下を呼び出すことと等価です。

fieldnum = mxGetFieldNumber(pm, 'fieldname');
mxGetFieldByNumber(pm, index, fieldnum);

ここで index1 です。

matlabroot/extern/examples/mx の次の例を参照してください。

バージョン履歴

R2006a より前に導入