主要内容

矩阵C API

编写与MATLAB一起工作的C/ c++程序® mxArray数据结构

要编写使用MATLAB R2017b或更早版本的C程序,请使用C Matrix API中的函数。这些函数与mxArray数据结构,用于构建C MEX函数或C引擎应用程序。

请注意

MathWorks建议,只要可能,选择c++而不是C应用程序。有关更多信息,请参见从c++调用MATLABc++库在MATLAB直接从MATLAB调用c++库函数。

C Matrix API有两个版本。

有关使用这些库函数的示例,请参见:

谨慎

C矩阵API不兼容MATLAB数据API,它支持现代c+万博1manbetx+特性。您不能使用C矩阵API函数与函数c++墨西哥人的应用程序MATLAB引擎API为c++

C数据类型

mxArray C类型MATLAB数组
mwSize C类型用于mxArray大小值
mwIndex C类型用于mxArray索引值
mwSignedIndex mxArray大小值的带符号整数C类型
mxChar 字符串数组的类型
mxLogical 逻辑阵列类型
mxComplexity 指定数组是否有虚组件的标志

mxArray属性

mxIsNumeric 确定mxArray是否为数字
mxIsComplex 判断数据是否复杂
mxGetNumberOfDimensions mxArray中的维数
mxGetElementSize 存储每个数据元素所需的字节数
mxGetDimensions 维数数组指针
mxSetDimensions 修改尺寸的数量和每个尺寸
mxGetNumberOfElements 数字mxArray中的元素数
mxCalcSingleSubscript 从第一个元素到所需元素的偏移量
mxGetM mxArray中的行数
mxSetM 设置mxArray中的行数
mxGetN mxArray中的列数
mxSetN 设置mxArray中的列数
mxIsEmpty 确定mxArray是否为空
mxIsFromGlobalWS 确定是否从mxArray中复制MATLAB全球的工作区

创建、查询和访问数据类型

全部展开

mxCreateDoubleMatrix 二维,双精度,浮点数组
mxCreateDoubleScalar 初始化为指定值的标量双精度数组
mxCreateNumericMatrix 二维数值矩阵
mxCreateNumericArray 一天数字数组
mxCreateUninitNumericMatrix 未初始化的二维数值矩阵
mxCreateUninitNumericArray 未初始化的N-D数字数组
mxIsScalar 确定数组是否为标量数组
mxGetScalar 数组中第一个数据元素的实分量
mxIsDouble 确定mxArray是否将数据表示为双精度浮点数
mxGetDoubles 中的实数据元素mxDOUBLE_CLASS数组
mxSetDoubles 设置真实的数据元素mxDOUBLE_CLASS数组
mxIsSingle 确定mxArray是否将数据表示为单精度浮点数
mxGetSingles 中的实数据元素mxSINGLE_CLASS数组
mxSetSingles 设置真实的数据元素mxSINGLE_CLASS数组
mxGetPr (不推荐)中的真实数据元素mxDOUBLE_CLASS数组
mxSetPr (不推荐)输入真实数据元素mxDOUBLE_CLASS数组
mxIsInt8 确定mxArray是否将数据表示为8位有符号整数
mxGetInt8s 中的实数据元素mxINT8_CLASS数组
mxSetInt8s 设置真实的数据元素mxINT8_CLASS数组
mxIsUint8 确定mxArray是否将数据表示为无符号8位整数
mxGetUint8s 中的实数据元素mxUINT8_CLASS数组
mxSetUint8s 设置真实的数据元素mxUINT8_CLASS数组
mxIsInt16 确定mxArray是否将数据表示为有符号的16位整数
mxGetInt16s 中的实数据元素mxINT16_CLASS数组
mxSetInt16s 设置真实的数据元素mxINT16_CLASS数组
mxIsUint16 确定mxArray是否将数据表示为无符号16位整数
mxGetUint16s 中的实数据元素mxUINT16_CLASS数组
mxSetUint16s 设置真实的数据元素mxUINT16_CLASS数组
mxIsInt32 确定mxArray是否将数据表示为带符号的32位整数
mxGetInt32s 中的实数据元素mxINT32_CLASS数组
mxSetInt32s 设置真实的数据元素mxINT32_CLASS数组
mxIsUint32 确定mxArray是否将数据表示为32位无符号整数
mxGetUint32s 中的实数据元素mxUINT32_CLASS数组
mxSetUint32s 设置真实的数据元素mxUINT32_CLASS数组
mxIsInt64 确定mxArray是否将数据表示为有符号的64位整数
mxGetInt64s 中的实数据元素mxINT64_CLASS数组
mxSetInt64s 将数据元素设置为mxINT64_CLASS数组
mxIsUint64 确定mxArray是否将数据表示为无符号64位整数
mxGetUint64s 中的实数据元素mxUINT64_CLASS数组
mxSetUint64s 设置真实的数据元素mxUINT64_CLASS数组
mxGetComplexDoubles 中的复杂数据元素mxDOUBLE_CLASS数组
mxSetComplexDoubles 设置复杂的数据元素mxDOUBLE_CLASS数组
mxGetComplexSingles 中的复杂数据元素mxSINGLE_CLASS数组
mxSetComplexSingles 设置复杂的数据元素mxSINGLE_CLASS数组
mxGetImagData 数字中的虚数据元素mxArray
mxSetImagData 以数字形式设置虚数据元素mxArray
mxGetPi (不推荐)mxDOUBLE_CLASS数组
mxSetPi (不推荐)设置虚数据元素mxDOUBLE_CLASS数组
mxGetComplexInt8s 中的复杂数据元素mxINT8_CLASS数组
mxSetComplexInt8s 设置复杂的数据元素mxINT8_CLASS数组
mxGetComplexUint8s 中的复杂数据元素mxUINT8_CLASS数组
mxSetComplexUint8s 设置复杂的数据元素mxUINT8_CLASS数组
mxGetComplexInt16s 中的复杂数据元素mxINT16_CLASS数组
mxSetComplexInt16s 设置复杂的数据元素mxINT16_CLASS数组
mxGetComplexUint16s 中的复杂数据元素mxUINT16_CLASS数组
mxSetComplexUint16s 设置复杂的数据元素mxUINT16_CLASS数组
mxGetComplexInt32s 中的复杂数据元素mxINT32_CLASS数组
mxSetComplexInt32s 设置复杂的数据元素mxINT32_CLASS数组
mxGetComplexUint32s 中的复杂数据元素mxUINT32_CLASS数组
mxSetComplexUint32s 设置复杂的数据元素mxUINT32_CLASS数组
mxGetComplexInt64s 中的复杂数据元素mxINT64_CLASS数组
mxSetComplexInt64s 设置复杂的数据元素mxINT64_CLASS数组
mxGetComplexUint64s 中的复杂数据元素mxUINT64_CLASS数组
mxSetComplexUint64s 设置复杂的数据元素mxUINT64_CLASS数组
mxGetPi (不推荐)mxDOUBLE_CLASS数组
mxSetPi (不推荐)设置虚数据元素mxDOUBLE_CLASS数组
mxCreateSparse 二维稀疏阵列
mxCreateSparseLogicalMatrix 二维稀疏逻辑阵列
mxIsSparse 判断输入是否为稀疏mxArray
mxGetNzmax IR、PR、PI数组中的元素个数
mxSetNzmax 设置非零元素的存储空间
mxGetIr 稀疏矩阵红外阵列
mxSetIr 红外阵列的稀疏阵列
mxGetJc 稀疏矩阵JC阵列
mxSetJc 稀疏阵列的JC阵列
mxGetData 非数字的数据元素mxArray
mxSetData 设置指向非数字数据元素的指针mxArray
mxCreateString 初始化为指定字符串的1-N个数组
mxCreateCharMatrixFromStrings 二维mxChar初始化为指定值的数组
mxCreateCharArray 一天mxChar数组
mxIsChar 确定输入是否为mxChar数组
mxGetChars 字符数组数据的指针
mxIsLogical 确定mxArray是否为该类型mxLogical
mxIsLogicalScalar 确定标量数组是否为mxLogical类型
mxIsLogicalScalarTrue 确定类型为mxLogical的标量数组是否为真
mxClassID 标识数组类的枚举值
mxCreateLogicalArray 天假逻辑阵列
mxCreateLogicalMatrix 二维数组逻辑
mxCreateLogicalScalar 标量、逻辑阵列
mxGetLogicals 指向逻辑数组数据的指针
mxIsClass 确定mxArray是否是指定类的对象
mxGetClassID 一类mxArray
mxGetClassName mxArray的字符串类
mxSetClassName 结构数组MATLAB对象数组
mxGetProperty 公共财产的价值MATLAB对象
mxSetProperty 公共财产的设定价值MATLAB对象
mxCreateStructMatrix 二维结构数组
mxCreateStructArray 一天结构数组
mxIsStruct 判断mxArray是否为结构
mxGetField 指向结构数组中给定索引和字段名的字段值的指针
mxSetField 在结构数组中设置字段值,给定索引和字段名
mxGetNumberOfFields 结构数组中的字段数
mxGetFieldNameByNumber 指向结构数组中给定字段号的字段名的指针
mxGetFieldNumber 结构数组中的字段号,给定字段名
mxGetFieldByNumber 指向结构数组中给定索引和字段号的字段值的指针
mxSetFieldByNumber 在结构数组中设置字段值,给定索引和字段号
mxAddField 添加字段到结构数组
mxRemoveField 从结构数组中移除字段
mxCreateCellMatrix 二维单元阵列
mxCreateCellArray 一天单元阵列
mxIsCell 确定mxArray是否为单元格数组
mxGetCell 指向单元格数组中元素的指针
mxSetCell 设置单元格数组的内容

删除和复制mxArray

mxDestroyArray 释放MXCREATE*函数分配的动态内存
mxDuplicateArray 对数组进行深度复制

转换mxArray

全部展开

mxMakeArrayComplex 真正的转换mxArray到复杂,保存真实数据
mxMakeArrayReal 把复杂的mxArray到真实,保存真实数据
mxArrayToString 字符串数组来
mxArrayToUTF8String 以UTF-8编码的数组到字符串
mxGetString mxChar数组转换为c风格字符串或Fortran字符数组
mxSetClassName 结构数组MATLAB对象数组

数据的内存管理

mxCalloc 为数组分配动态内存,初始化为0,使用MATLAB内存管理器
mxMalloc 使用分配未初始化的动态内存MATLAB内存管理器
mxRealloc 重新分配动态内存使用MATLAB内存管理器
mxFree 释放由mxCalloc, mxMalloc, mxRealloc, mxArrayToString或mxArrayToUTF8String函数分配的动态内存

断言

mxAssert 为调试目的检查断言值
mxAssertS 检查断言值而不打印断言文本

常量

mxIsInf 确定输入是否为无穷大
mxIsFinite 确定输入是否有限
mxIsNaN 确定输入是否为NaN (Not-a-Number)

主题

在C MEX文件中传递字符串

这个例子展示了如何将字符串传递给用C Matrix API构建的MEX函数。

在C MEX文件中传递标量值

这个例子展示了如何编写一个传递标量值的MEX文件。

在C MEX文件中处理稀疏数组

这个例子展示了如何使用C matrix API填充一个稀疏矩阵。

在C MEX文件中处理8-,16-,32-和64-位数据

这个例子展示了如何使用C Matrix API在MEX文件中使用无符号16位整数。

在C MEX文件中传递结构和单元格数组

这个例子展示了如何将结构和单元格数组传递给用C Matrix API构建的MEX文件。

在C MEX文件中操作多维数值数组

可以使用类型化数据访问函数来操作多维数字数组,例如mxGetDoublesmxGetComplexDoubles