mexFunction

在使用MATLAB编译C/C++代码时,C/C++代码中要使用一个mexFunction函数,那么这个函数是如何定义,在编译时又是如何实现的呢?下面我将使用实例进行说明。

如一个简单的函数:

double add(double x, double y)

{

return x + y;

}

mexFunction的定义为:

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

{

}

可以看到,mexFunction是没返回值的,它不是通过返回值把结果传回Matlab的,而是通过对参数plhs的赋值。mexFunction的四个参数皆是说明Matlab调用MEX文件时的具体信息,如这样调用函数时:

>> b = 1.1; c = 2.2;

>> a = add(b, c)

mexFunction四个参数的意思为:

nlhs = 1,说明调用语句左手面(lhs-left hand side)有一个变量,即a。

nrhs = 2,说明调用语句右手面(rhs-right hand side)有两个自变量,即b和c。

plhs是一个数组,其内容为指针,该指针指向数据类型mxArray。因为现在左手面只有一个变量,即该数组只有一个指针,plhs[0]指向的结果会赋值给a。

prhs和plhs类似,因为右手面有两个自变量,即该数组有两个指针,prhs[0]指向了b,prhs[1]指向了c。要注

mexFunction相关推荐

  1. 编写 Matlab mexFunction (C mex)

    资料一 MATLAB的MEX文件编写和调试 1. MEX的编写格式 写MEX程序其实就是写一个DLL程序,所以你可以使用C,C++,Fortran等多种编程语言来写. 编写MEX程序的编辑器可以使用M ...

  2. matlab中加入C代码:matlab中安装C语言编译器TDM-GCC,编译、运行及mexFunction接口设置

    通过把耗时长的函数用c语言实现,并编译成mex函数可以加快执行速度.Matlab本身是不带c语言的编译器的,所以要求你的机器上已经安装有VC,BC或Watcom C中的一种. 如果你在安装Matlab ...

  3. 生成窄带信号_房间冲激响应RIR原理与模拟生成方法

    论文"Room Impulse Response Generator"的阅读笔记.下面的链接为原论文. rir_generator.pdf 530.3K · 百度网盘 这篇论文主要 ...

  4. c++引用matlab类,matlab调用C++函数浅谈(一)

    由于在下才疏学浅,在网上看各高手指南时亦觉云里雾里,遂决定一切说明从最基础说起,一是方便自己(记性奇差),二是方便似我的小白.以下部分是我从各网站论坛等摘抄.重组.改写过的,以求更加详实明朗,由于参考 ...

  5. 使用matlab进行mex编译时的路径问题mexopts

    matlab和vs 进行混合编程时总须要使用matlab编译mexFunction.cpp文件. 这些文件免不了使用include下的*.h和lib下的*.lib文件.举例说明.这次我的cpp中用到了 ...

  6. 怎么把dll库写成MATLAB接口,如何在Matlab中应用动态连接库接口技术

    1 引言 Matlab是当前应用最为广泛的数学软件,具有强大的数值计算.数据分析处理.系统 分析.图形显示甚至符号运算等功能.利用这一完整的数学平台,用户可以快速实现十分 复杂的功能,极大地提高工程分 ...

  7. matlab怎么跑.cpp程序,MATLAB编译cpp文件

    目的:打通MATLAB与VC之间的通道,实现用MATLAB调用VC程序,以及VC调用MATLAB程序. 上篇博客实现了将MATLAB的M文件编译成C/C++文件,exe应用程序.这篇实现MATLAB编 ...

  8. C语言实现radon变换

    Radon变换: 考虑b=ax+y,将原来的XY平面内的点映射到AB平面上.则原来在XY平面上的一条直线的所有的点,在AB平面上都位于同一个点.通过记录下AB平面上的点的积累厚度,可反知XY面上的一条 ...

  9. 如何把opencv编译到matlab,c – 为OpenCV编译MATLAB绑定

    我正在尝试编译OpenCV 3.0的MATLAB绑定,即 Github的当前版本.我一直收到以下错误: CMake Error at /opencv/modules/matlab/compile.cm ...

最新文章

  1. android radiooptions简介
  2. 白话Elasticsearch03- 结构化搜索之基于bool组合多个filter条件来搜索数据
  3. Sublime Text 2.0.1 版本 Build 2217 汉化包
  4. java catch自定义异常_Laravel - 自定义处理程序中的Catch异常
  5. IK Multimedia MODO BASS for mac(低音效果虚拟乐器)
  6. 最小二乘法曲线拟合公式推导与代码实现
  7. 微信人脸识别-采集个人信息
  8. 揭秘nginx访问的神秘面纱
  9. 布局 - 收藏集 - 掘金
  10. Vcenter证书过期处理----Vcenter无法登录,“根证书错误”,“签名证书无效”,“503 service not available”
  11. push_back和emplace_back区别
  12. 深度学习—利用TensorFlow2实现狗狗品种品种(DenseNet121实现)
  13. Cadence修改打开默认版本
  14. 基于动态手势识别的酷狗音乐播放器控制
  15. SpringBoot + MyBatis-Plus + Shiro授权认证
  16. 沅湘流不尽,屈子怨更深,日暮秋风起,潇潇枫树林。
  17. Spring详解(超全面)
  18. 一些牛人榜样,多看看他们写的东西(后续整理牛人的blog等)
  19. POJ1743——不可重迭的最长重复子串
  20. 脉冲消融(PFA)中使用心电门控的作用

热门文章

  1. RocketMQ 消息消费 轮询机制 PullRequestHoldService
  2. oracle给账号添加权限
  3. 读Hean first jQuery笔记2(常用方法)
  4. 总会用到的系列8:基金,可能纠缠一生的天使或者恶魔
  5. 【Docker】安装 Zipkin
  6. Kali之airmon-ng
  7. 微信公众平台实现音乐点播(PHP版)
  8. 市场定位(Marketing Positioning)
  9. html5文本框获取焦点,文本框获得焦点和失去焦点的判断代码
  10. 代码块:在Java中用{}括起来的代码