Advertisement

快速掌握matlab与C/C++混合编程(mex文件)技术

阅读量:

为了更好地提取视频特征并处理大量数据,在现有程序运行速度较慢的情况下决定将其中一个功能模块改写为C语言版本以提升效率,并在此总结一些个人体会

所采用的编译器为MATLAB内置版本Lcc-win32 C 2.4.1,在此过程中能够避免使用复杂的高级编译工具(例如VS、GCC)。然而该系统存在局限性在于仅支持C语言编程,并且无法调用C++相关的库组件(如vector、OpenCV)。因此本文仅限于处理基于矩阵和数组的操作(其中不包含字符串类型或其他复杂数据结构如cell)的简单Mex函数开发。

用Lcc编译器编写mex文件的几个注意事项:

1、注释不能有中文,否则报错 :Specified export _mexFunction is not defined

2、每个变量应在函数的起始位置进行声明以确保完整性和正确性 。如果一个变量未被预先声明就会导致程序运行时出现语法错误:illegal statement termination ,请务必提前完成所有必要的初始化工作

下面是一个计算矩阵a-b的例子,

MexFunction为默认函数名称,在无需更改的情况下,默认情况下Matlab采用的是mex文件名

nlhs代表的是输出参数的个数

plhs是一个由指针构成的数组,在内存管理过程中用于存储外部调用函数返回的结果数据区域。每个指针都指向一个独立的$mxArray

全部评论 (0)

还没有任何评论哟~