主要内容

mxGetField (C和Fortran)

从结构数组,指针字段值指数和字段名

C语法

#包括“矩阵。h”mxArray * mxGetField (const mxArray *点,mwIndex指数,const char *字段名);

Fortran语言的语法

# include“fintrf。h”mwPointer mxGetField (pm、索引字段名)下午mwPointer mwIndex指数字符* (*)fieldname

参数

指向结构的指针mxArray

指数

所需的元素的索引。

在C语言中,第一个元素的mxArray有一个指数0。的指数最后一个元素n - 1,在那里N数组中元素的个数。在Fortran,的第一个元素mxArray有一个指数1。的指数最后一个元素N,在那里N数组中元素的个数。

字段名

字段的值的名称你想提取。

返回

指针mxArray在指定的字段指定字段名在成功。返回在C (0在Fortran)如果一个无效的参数传递或者没有分配给指定的字段值。失败的常见原因包括:

  • 指定数组指针这并不指向一个结构mxArray。以确定是否指向一个结构mxArray,叫mxIsStruct

  • 指定一个指数一个元素的范围之外mxArray。例如,给定一个结构mxArray包含10个元素,你不能指定一个指数大于9在C (10在Fortran)。

  • 指定一个不存在的字段名。调用mxGetFieldNameByNumbermxGetFieldNumber现有的字段名称。

  • 堆空间不足。

描述

调用mxGetField获取指定的字段的值包含在指定的元素。在pseudo-C术语中,mxGetField返回值:

点(指数).fieldname

mxGetFieldByNumber就像mxGetField。两个函数返回相同的值。唯一的区别是你指定的方式。mxGetFieldByNumber需要一个字段作为第三个参数数量,mxGetField字段名作为第三个参数。

不叫mxDestroyArray在一个mxArray返回的mxGetField函数。

请注意

输入MEX-file常数是只读的mxArray年代,不要修改输入。使用mxSetCell*mxSetField*MATLAB的函数来修改细胞或字段®争论导致不可预知的结果。

在C语言中,调用:

mxGetField (pa、索引“field_name”);

相当于调用:

field_num = mxGetFieldNumber (pa,“field_name”);mxGetFieldByNumber (pa、索引field_num);

在那里,如果你有一个吗1——- - - - - -1结构,指数0

在Fortran语言调用:

mxGetField (pm、索引字段名)

相当于调用:

fieldnum = mxGetFieldNumber(点,字段名)mxGetFieldByNumber(点、索引fieldnum)

在那里,如果你有一个吗1——- - - - - -1结构,指数1

例子

看下面的例子matlabroot走读生/ / eng_mat例子

版本历史

之前介绍过的R2006a