怎么用matlab中的mex文件
答案:2 悬赏:30 手机版
解决时间 2021-02-10 19:33
- 提问者网友:蔚蓝的太阳
- 2021-02-10 08:27
怎么用matlab中的mex文件
最佳答案
- 五星知识达人网友:走死在岁月里
- 2021-02-10 09:49
程序源文件编译后的文件。相比m文件,mex文件执行速度更快。不能像查看m文件一样查看mex文件,原因是mex文件是二进制文件。
全部回答
- 1楼网友:洒脱疯子
- 2021-02-10 10:36
通过mex文件可以在matlab中像调用内嵌函数一样调用现有的使用c语言和fortran等语言编写的函数,实现了代码重用,同时也能解决matlab循环效率低的缺点,提高matlab环境中数据处理的效率。mex文件的后缀名为.mexw32mex文件的编写和编译需要两个基本条件:一是必须按照matlab应用程序接口组件和相关工具,二是要有c语言或fortran语言的编译器。需要对matlab系统进行设置,使matlab系统知道使用系统的哪一个c语言编译器,以及其参数和路径。mex文件系统设置:>>mex–setup按照提示进行,最后出现done…系统配置完毕。c语言mex文件的建立c语言mex文件的建立1.mex文件的结构a)计算子程序b)入口子程序,voidmexfunction(intnlhs,mxarray*plhs[],intnrhs,constmxarray*prhs[]){}2.创建timestwoalt.c#include"mex.h"voidtimestwo_alt(double*y,doublex){*y=2.0*x;}voidmexfunction(intnlhs,mxarray*plhs[],intnrhs,constmxarray*prhs[]){double*y;doublex;if(nrhs!=1){mexerrmsgtxt("oneinputargumentrequired.");}elseif(nlhs>1){mexerrmsgtxt("toomanyoutputarguments.");}elseif(!mxisnumeric(prhs[0])){mexerrmsgtxt("argumentmustbenumeric.");}elseif(mxgetnumberofelements(prhs[0])!=1||mxiscomplex(prhs[0])){mexerrmsgtxt("argumentmustbenon-complexscalar.");}plhs[0]=mxcreatedoublematrix(1,1,mxreal);x=mxgetscalar(prhs[0]);y=mxgetpr(plhs[0]);timestwo_alt(y,x);}3.编译链接c语言的mex文件源程序,在matlab的控制窗口中输入:mextimestwoalt.c生成一个名为timestwoalt.mexw32的mex文件4.运行:在matlab的控制窗口中输入x=2;y=timestwoalt(x)输出:y=4mex文件实现了一种c语言与matlab的接口,其实际的计算功能仍在c语言形式的计算子程序中完成,而入口子程序的功能是检查参数以匹配c语言的参数规范(howto?)。当有c语言编写的大型程序时,不必用matlab语言重新编写,只要将此c语言程序作为一个计算子程序,然后编写一个入口子程序,完成参数的匹配,然后编译成mex文件即可。mex文件的另外一个功能是可以将matlab编程中的瓶颈问题,如多重循环等,将此类费时的指令用c语言实现,然后作必要的入口子程序,编译成mex文件,可以有效地提高matlab的效率。s-函数创建器限制了c语言s-函数的功能:只能有一个输入信号和一个输出信号,而且只能处理double类型的数据!所以,可用性不大。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯