声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

声振论坛 展示 科学计算 matlab 查看内容

Matlab与C++接口与混合编程讨论小结

2015-10-29 00:33| 发布者: aspen| 查看: 4353| 评论: 1|原作者: AaronSpark|来自: 声振论坛

摘要: Matlab与C++接口与混合编程讨论小结 一章、概述  Matlab是当今世界上使用最为广泛的数学软件,它具有相当强大的数值计算、 数据处理、 系统分析、图形显示,甚至符号运算功能,是一个完整的数学平 台,在这 ...
用c编写mex程序[三]

   通过前面两部分的介绍,大家对参数的输入和输出方法应该有了基本的了解。具备了这
些知识,就能够满足一般的编程需要了。但这些程序还有些小的缺陷,以前面介绍的re 由于
前面的例程中没有对输入、输出参数的数目及类型进行检查,导致程序的容错性很

  #include "mex.h" void mexFunction(int nlhs, mxArray *plhs[], 讨论区 [Matlab]
int nrhs, const mxArray *prhs[]) { double *inData; double *outData; int M,N; //异
常处理 //异常处理

   if(nrhs!=1) mexErrMsgTxt("USAGE: b=reverse(a)\n"); if(!mxIsDouble(prhs[0]))
mexErrMsgTxt("the Input Matrix must be double!\n"); inData=mxGetPr(prhs[0]); M=m
xGetM(prhs[0]); N=mxGetN(prhs[0]);

   void mexFunction(int nlhs, mxArray *plhs[], plhs[0]=mxCreateDoubleMatrix(M
,N,mxREAL); outData=mxGetPr(plhs[0]); for(i=0;iM;i++) for(j=0;j

   在上面的异常处理中,使用了两个新的函数:mexErrMsgTxt和mxIsDouble。MexErrMs
gT xt在给出出错提示的同时退出当前程序的运行。MxIsDouble则用于判断mxArray中的数据
是否double类型。当然Matlab还提供了许多用于判断其他数据类型的函数,这里不加详 述。
需要说明的是,Matlab提供的API中,函数前缀有mex-和mx-两种。带mx-前缀的大多是对 mx
Array数据进行操作的函数,如mxIsDouble,mxCreateDoubleMatrix等等。而带mx前缀 的则大
多是与Matlab环境进行交互的函数,如mexPrintf,mxErrMsgTxt等等。了解了这 一点,对在
Apiref.pdf中查找所需的函数很有帮助。 至此为止,使用C编写mex函数的基本过程已经介绍
完了。下面会在介绍几个非常有用的 函数调用。如果有足够的时间,也许还会有一个更复杂
一些的例程。
123456
发表评论

最新评论

引用 afly 2006-3-28 19:40
请问版主有没有有关vc++6.0调用mcc产生的库函数(matlab7.1环境下)的具体步骤啊?在这个matlab7 .1版本下有关这个方面的资料太少了,谢谢了!

查看全部评论(1)

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2025-4-11 21:45 , Processed in 0.054960 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部