11.6 Matlab MEX 文件的编写与调试

本文详细介绍了如何在MATLAB中编写和调试MEX文件,包括使用Visual Studio 2010设置MEX项目的步骤,MEX文件的基本结构,以及如何在VC中进行编译和调试。此外,还提到了MEX文件与DLL的区别以及在MATLAB中调用C/C++动态连接库的方法。
摘要由CSDN通过智能技术生成

一: mex编写

1. 安装VS2010 专业版


2. matlab 执行命令:

mex -setup C++


3.startup


%%startup.m

root=pwd;
cd('feature');
mex extract_orihist.cpp;
mex feature_integration.cpp;
mex multi_inte.cpp;
cd(root);


例如我们编译一个名字为MyMEXFun.c的 mex 源文件,可以在 Matlab 的 command 窗口输入命令mex –g –v MyMEXFun.c即可。



%%


二: mex调试

代码的下载

转载:

MATLAB中MEX文件的编写与调试

1.学习与示例:http://www.mathworks.cn/cn/help/matlab/creating-c-c-and-fortran-programs-to-be-callable-from-matlab-mex-files.html

1. MEX的编写格式

写MEX程序其实就是写一个DLL程序,所以你可以使用C,C++,Fortran等多种编程语言来写。

编写MEX程序的编辑器可以使用MATLAB的代码编辑器,也可使用自己的C++编辑器,如VS2008等。

用MATLAB的编辑器的好处是,MEX函数会加粗高亮显示,这给程序编写带来便利,可惜无法动态调试。如用VC即可编译也可调试,比较方便。mex的编译结果实际上就是一个带输出函数mexFunction 的dll文件,所以会用VC编写和调试dll,就会用VC编写和调试MEX程序。

a. MEX文件格式

#include "mex.h"

void mexFunction( int nlhs, mxArray *plhs[],
                  int nrhs, const mxArray *prhs[] )
{

}

四个参数分别用来输出和输入数据: nlhs 输出参数个数,plhs 输出参数指针 (nrhs和prhs是输入参数相关的)。

注意: 我们对输出和输入参数的操作都是通过指针的方式进行的。(这点很容易理解,因为我们的计算结果是需要传递给MATLAB的,实际上我们传递的不是数据,而是指针。MATLAB可以通过这些指针,访问内存中的数据。)

b. 操作输入数据

对输入数据进行操作,需要通过MEX函数mxGetPr 得到数据的指针地址。 mxGetM 和 mxGetN 得到矩阵数据的行和列 (返回整数)。对于实矩阵,我们可以定义 double *M; 来对实矩阵数据操作。如:

double *M;

int m,n;

// 指针指向第一个参数的数据地址

M = mxGetPr(prhs[0]);

m = mxGetM(prhs[0]);

n = mxGet

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值