三、C语言程序MEX文件实例

MATLAB 5 API提供了一系列程序来处理MATLAB所支持的各种数据类型,每一种数据类型都有对应函数共你使用来处理对应的数据。下面给出一个简单的C语言程序和与之对应的MEX文件代码,该程序的功能是将标量x加倍。

C语言程序如下:

#include "math.h"

void timestwo(double y[], double x[])

{

y[0]=2.0*x[0];

return;

}

下面是与C语言程序功能相同的MEX文件:

#include "mex.h"

void timestwo(double y[], double x[])

{

y[0]=2.0*x[0];

}

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

{

double *x, *y;

int mrows, ncols;

/*检查正确的参数数目*/

if(nrhs!=1){

mexErrMsgTxt("需要一个输入参数.");

}

else if(nlhs>1){

mexErrMsgTxt("输出参数太多.");

}

/*输入变量必须是非复数类型的标量*/

mrows=mxGetM(prhs[0]);

ncols=mxGetN(prhs[0]);

if(!mxIsDouble(prhs[0]) || mxIsComplex(prhs[0]) || !(mrows==1 && ncols==1)){

mexErrMsgTxt("输入变量必须是非复数类型的标量.");

}

/*为返回参数创建矩阵*/

plhs[0]=mxCreateDoubleMatrix(mrows, ncols, mxREAL);

/*分配输入输出参数的指针*/

x=mxGetPr(prhs[0]);

y=mxGetPr(plhs[0]);

/*调用timestwo子函数*/

timestwo(y, x);

}

C语言是在编译的时候检查函数参数。MATLAB可以在M函数中传递任意数量和类型的参数,MEX文件也是如此,不过在程序中必须可靠地处理输入输出参数的数目。如果将上面的MEX文件命名为timestwo.c,就可以对它进行编译和链接,在MATLAB命令窗口下输入:

mex timestwo.c

这是产生MEX文件timestwo.***所必需的步骤,该文件的扩展名所运行的系统平台的类型。Windows系统下,扩展名为dll。此时,就可以象调用M函数一样调用timestwo了。

在MATLAB命令窗口中输入:

x=2;

y=timestwo(x);

就可以得到:

y=4;

四、小 结

MEX文件虽然具有较强大的功能,但并不是对所有的应用都恰当。MATLAB是一个高效率的编程系统,特别适合于工程计算、系统仿真等应用。它的最大优点就是将人们从繁杂的程序中解放出来。因此,能够用M文件完成的程序,应尽量使用MATLAB编写,除非遇到必须使用MEX文件的情况。

MATLAB的应用编程接口是一个功能强大的系统,除了调用C或Fortran程序,还可以实现从MATLAB环境中输入输出数据、在MATLAB中和其他程序建立客户/服务器关系等功能。

matlab怎么与c语言接口,Matlab与C语言程序的应用编程接口 (2)相关推荐

  1. 支付宝花呗接口接入php,支付宝小程序开通花呗接口,这是正式向微信小程序正式宣战?...

    自微信小程序一战成名,阿里巴巴.百度也相继对轻量级应用领域发力. 2018年7月,支付宝首页上线"小程序收藏"入口,功能为常用小程序的收藏夹.开放后,支付宝用户可以在App中搜索& ...

  2. 基于linux的qos编程接口研究与分析,基于Linux的QoS编程接口研究与分析(2)

    1.4 QoS在网络应用中的重要性 随着因特网的快速爆炸式发展,新兴的业务也层出不穷.因为网络正在从初期的单一的数据网络,向集成音频.视频.数据的宽带多媒体网络方向发展.而随着骨干网和接入网上带宽的不 ...

  3. 4-AMBA VIP 编程接口

    关于我:2020届双非学校材料专业毕业,现在已转行芯片验证,入职两个月. 最近MCU项目在用Synopsys公司的VIP,正好自己在看AMBA的VIP,就整理一下: 4-介绍AMBA System E ...

  4. Matlab与C/C++混合编程接口及应用

    http://www.cnblogs.com/lidabo/archive/2012/08/24/2654148.html 在参考文献基础上.补充和完善了. Matlab与C/C++混合编程接口及应用 ...

  5. C语言实现MATLAB 6.5中M文件的方法

    摘要:本文着重描述了运用MATLAB命令将M文件翻译为C语言程序,并修改为可直接调用的C语言函数的方法,使用该方法所需要注意的方法局限性和MATLAB版本差异的影响.运用该方法将能够使C语言能直接使用 ...

  6. matlab与c 接口与混合编程,Matlab与C/C++混合编程接口及应用方法解析

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

  7. matlab的日期当循环量,R语言与matlab循环时间对比

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 想R语言与matlab循环时间对比,到底相差多少,不看不知道,一看吓一跳: 1)R语言 t1=Sys.time() a=NULL for(i in 1:1 ...

  8. matlab m语言,我要编写matlab一个公式的m语言,请问错在哪里?,M语言的MATLAB的M语言...

    导航:网站首页 > 我要编写matlab一个公式的m语言,请问错在哪里?,M语言的MATLAB的M语言 我要编写matlab一个公式的m语言,请问错在哪里?,M语言的MATLAB的M语言 匿名网 ...

  9. rstudio和matlab,R语言与matlab循环时间对比

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 想R语言与matlab循环时间对比,到底相差多少,不看不知道,一看吓一跳: 1)R语言 t1=Sys.time() a=NULL for(i in 1:1 ...

最新文章

  1. 三十之惑–面霸的八月(第一部分)
  2. apache2 cgi配置
  3. iPhone 13及12推动,机构预计苹果今年将销售近2亿部5G iPhone
  4. python判断字符串出现的次数_【如何判断python字符串出现次数?这几种方法你一定要学会】- 环球网校...
  5. 中国甲真菌病药物行业市场供需与战略研究报告
  6. 微信推出“腾讯QQ”小程序;马化腾又要发红包;GitLab 12.5 稳定版发布| 极客头条...
  7. android 导航自动切换,Android导航抽屉切换图标向右
  8. 双系统安装:Deepin 尝鲜
  9. docker安装Lefse和分析流程
  10. 抖音如何吸引精准流量?短视频引流应该怎么做
  11. install Understand on ubuntu 22.04
  12. 【 MATLAB 】poly 函数介绍
  13. 更改 IE 代理服务器的设置
  14. UG NX机械手抓取实物的仿真,包涵PLC程序,触摸屏程序
  15. 靠谱的voip系统解决方案
  16. 新手入门:CentOS登录出现login incorrect问题
  17. Jmeter手把手教入门详细步骤,包括使用Jmeter进行Web,java模块测试
  18. 大一下期计算机考试试题操作题,2016年大一计算机考试操作题
  19. GoldenDict词典下载安装
  20. Marr-Hildreth边缘检测器

热门文章

  1. Ubuntu安装360浏览器
  2. sqli-lab的小白菜通关大合集
  3. 4款功能强大的文本编辑软件,最适合新手!
  4. windows 语音识别
  5. Android.mk的用法和基础 m、mm、mmm编译命令
  6. 蜻蜓设备+支付宝会员的开发笔记
  7. TextMate Footnotes
  8. 数据结构与算法—最小生成树(Prim算法和Kruskal算法算法详解)
  9. 高速数字系统时钟设计-AD9516
  10. 针对数据库拒绝访问的解决办法以及Mysql数据库的安装环境变量配置一条龙