matlab调用c语言编程.docx
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
"Matlab调用C语言编程" Matlab是一个解释型的编程环境,具有交互性强、执行速度慢等特点。为了提高执行速度,可以使用C语言编写mex程序,调用Matlab中的基础矩阵运算函数,避免使用循环语句。Mex程序是一个根据一定的接口规范编写的DLL文件,可以使用C语言或Fortran语言编写。 Matlab中的基础矩阵运算函数都是以二进制程序的形式存在的,运行速度远远快于解释执行。例如,使用ticfor i=1:10000b(i)=a(10001-i);end可以实现将向量a里的数据逆序赋给向量b,但这种方法执行速度很慢;而使用ticb=a(10000:-1:1);可以实现相同的功能,但执行速度很快。这是因为Matlab里的基础矩阵运算函数都是以二进制程序的形式存在的,运行速度远远快于解释执行。 Mex程序可以调用C语言编写的函数,实现高速执行。例如,可以编写一个max2.dll的mex函数,然后将其加到Matlab的搜索路径中,就可以像调用普通Matlab函数一样来调用它了。由于把循环体放到了二进制程序中,执行速度快得多。 为了编写mex程序,需要安装VC、BC或Watcom C编译器,并在Matlab中设置编译器路径。在设置编译器路径时,只能使用路径名称的8字符形式。例如,如果使用VC5装在路径C:\PROGRAM FILES\DEVSTUDIO下,那么在设置路径时就要写成:C:\PROGRA~1。 编写mex程序需要使用mex.h头文件,并定义mexFunction函数。例如,以下是一个简单的mex程序hello.c: #include "mex.h" void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]){ mexPrintf("hello,world!\n"); } 这个程序可以在Matlab中使用mex命令编译,例如: mex hello.c 如果编译成功,会生成一个HELLO.DLL文件,可以在Matlab中调用该函数。 分析hello.c程序,可以看到程序的结构是十分简单的,整个程序由一个接口子过程mexFunction构成。mexFunction函数有四个参数:nlhs、plhs、nrhs和prhs。其中,nlhs是输出参数数目,plhs是指向输出参数的指针,nrhs是输入参数数目,prhs是指向输入参数的指针。 例如,使用[a,b]=test(c,d,e)调用mex函数test时,传给test的这四个参数分别是2、plhs、3、prhs。其中:prhs[0]=c、prhs[1]=d、prhs[2]=e。当函数返回时,将会把你放在plhs[0]、plhs[1]里的地址赋给a和b,达到返回数据的目的。 prhs和plhs都是指向类型mxArray类型数据的指针。这个类型是在mex.h中定义的,事实上,在Matlab里大多数数据都是以这种类型存在的。
- 粉丝: 1w+
- 资源: 6万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助