• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Matlab与C混编的介绍

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

原本写给一个朋友的,帮助她入门matlab与C混编的

>#####环境:
* Matlab:MATLAB R2013a
* C编译器VC++2012

===
#####配置环境:
 在**Matlab**命令行下输入:

**step.1**

 ```
mex -setup
 
 ```

---
 **step.2**

你也可以使用:

 ```
 help mex

 ```
查看更多信息 

---

**step.3**

按提示安装C编译器

---
**step.4**

编写**c-mex**文件
可使用

```
edit

```
命令在matlab中打开编辑器


===


#####**C-MEX**文件的结构:
 * 引入头文件:

```
#include "mex.h" 

```
* 定义计算子函数

```
double add(double x, double y)
{
    return x + y;
}

```
*引入接口函数

```

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

```
====
####说明:

> 核心是计算子函数,在C语言中函数要先声明才能使用,所以计算子函数的函数声明放在前面。

> 接口函数是C语言和matlab的接口,或者理解成协议,桥梁也可以,它接受4个参数:nlhs是左手参数个数,plhs是左手参数数组其内容为指针,该指针指向数据类型为mxArray的变量。相对应的nrhs和prhs。

> 编写的**C-Mex**文件应该保存为.c文件,文件类型是**all file**,尤其要强调的一点是,该文件的文件名要和函数的函数名一致,不然使用的时候会报**undefined function**的错误

>当启用mex之后,你可以使用这段程序来检查环境是否正确:

```
[print.c]
# include "mex.h"

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

    mexPrintf("hello");

}

```
保存为print.c之后命令行运行

```
>>mex print.c
>>print

```
如果编译没问题,打印出hello>>这种形式,那么说明环境ok

> 下面是一个完整的例子及其过程 :

```

[add.c]

#include "mex.h"  
 
double add(double x, double y)
{
    return x + y;
}
 
void mexFunction(int nlhs,mxArray *plhs[], int nrhs,const mxArray *prhs[])
{
    double *a;
    double b, c;
    plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL);
    a = mxGetPr(plhs[0]);
    b = *(mxGetPr(prhs[0]));
    c = *(mxGetPr(prhs[1]));
    *a = add(b, c);
}

```

在命令行中执行

```
mex add.c

```

来编译它

若无报错,再执行

```
c=add(1.1,2.2)

```
则c的值即是3.3

关于此段程序,可参考 [这篇文章](http://blog.sina.com.cn/s/blog_468651400100coas.html)

  


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
【转】在Delphi中创建Linux守护程序(服务进程)发布时间:2022-07-18
下一篇:
delphi2010与delphiXE破解版的冲突发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap