主要内容

mxSetFieldByNumber (C和Fortran语言)

在结构数组中设置字段值,给定索引和字段号

C语法

#include "matrix.h" void mxSetFieldByNumber(mxArray *pm, mwIndex index, int fieldnumber, mxArray *pvalue);

Fortran语言的语法

#include "fintrf.h"子例程mxSetFieldByNumber(pm, index, fieldnumber, pvalue) mpointer pm, pvalue mwIndex index integer*4 fieldnumber

参数

指向结构的指针mxArray.调用mxIsStruct以确定是否指向一个结构mxArray

指数

所需元素的索引。

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

看到mxCalcSingleSubscript有关计算索引的详细信息。

fieldnumber

场在结构中的位置。该字段必须在结构中存在。

在C语言中,每个元素的第一个字段都有一个fieldnumber0.的fieldnumber最后一点是n - 1,在那里N是字段的数量。

在Fortran中,每个元素的第一个字段有一个fieldnumber1.的fieldnumber最后一点是N,在那里N是字段的数量。

pvalue

指针mxArray包含要分配的数据。

描述

使用mxSetFieldByNumber分配…的内容pvalue指定的字段fieldnumber的元素指数mxSetFieldByNumber就像mxSetField;但是,该函数通过位置号而不是名称来标识字段。

如果你想替换fieldnumber,然后首先释放现有数据的内存。使用mxGetFieldByNumber函数获取指向该字段的指针,调用mxDestroyArray在指针上,然后调用mxSetFieldByNumber来分配新值。

你不能分配pvalue转换为结构中的多个字段或mxArray.如果你想要分配pvalue,然后使用mxDuplicateArray函数复制数据,然后调用mxSetFieldByNumber在每个副本。

要释放使用此函数创建的结构的内存,请调用mxDestroyArray仅在结构数组上。不叫mxDestroyArray在数组中pvalue点。如果有,用MATLAB®试图释放相同的内存两次,这可能会损坏内存。

请注意

mex文件的输入是常量只读的mxArrays.不要修改输入。使用mxSetCellmxSetField修改MATLAB参数的单元格或字段的函数将导致不可预知的结果。

选择

C语言

在C语言中,调用:

mxSetField(pa, index, "field_name", new_value_pa);

等价于调用:

field_num = mxGetFieldNumber(pa, "field_name");mxSetFieldByNumber(pa, index, field_num, new_value_pa);

Fortran语言

在Fortran语言调用:

mxSetField(pm, index, 'fieldname', newvalue)

等价于调用:

mxSetFieldByNumber(pm, index, fieldnum, newvalue) = mxGetFieldNumber(pm, 'fieldname')

例子

参见matlabroot走读生/ / mx例子

之前介绍过的R2006a