matlab workday,MATLAB MEX 文件

MEX文件是MATLAB与C/Fortran等语言交互的一种方式,允许像调用内置函数一样调用外部代码,提高MATLAB中数据处理效率。创建MEX文件需要MATLAB接口组件和C/Fortran编译器,并通过`mex -setup`配置编译器。C语言MEX文件包含计算子程序和入口子程序,入口子程序用于参数检查和转换。MEX文件可用于优化MATLAB中的循环等低效操作,实现代码重用。
摘要由CSDN通过智能技术生成

通过MEX文件可以在MATLAB中像调用内嵌函数一样调用现有的使用C语言和Fortran等语言编写的函数,实现了代码重用,同时也能解决MATLAB循环效率低的缺点,提高MATLAB环境中数据处理的效率。

MEX文件的后缀名为 .mexw32

MEX文件的编写和编译需要两个基本条件:一是必须按照MATLAB应用程序接口组件和相关工具,二是要有C语言或Fortran语言的编译器。

需要对MATLAB系统进行设置,使MATLAB系统知道使用系统的哪一个C语言编译器,以及其参数和路径。

MEX文件系统设置:

>>

mex –setup 按照提示进行,最后出现Done…系统配置完毕。

C语言MEX文件的建立

C语言MEX文件的建立

1. MEX文件的结构

a)

计算子程序

b)

入口子程序,void mexFunction(int nlhs,

mxArray *plhs[],int nrhs,const mxArray *prhs[]) {

}

2.

创建timestwoalt.c

#include "mex.h"

void timestwo_alt(double *y, double

x)

{

*y = 2.0*x;

}

void mexFunction( int nlhs, mxArray

*plhs[],

int nrhs, const mxArray *prhs[] )

{

double *y;

double x;

if (nrhs != 1) {

mexErrMsgTxt("One input argument required.");

} else if (nlhs > 1)

{

mexErrMsgTxt("Too many output arguments.");

} else if (!mxIsNumeric(prhs[0]))

{

mexErrMsgTxt("Argument must be numeric.");

} else if

(mxGetNumberOfElements(prhs[0]) != 1 || mxIsComplex(prhs[0]))

{

mexErrMsgTxt("Argument must be non-complex scalar.");

}

plhs[0] =

mxCreateDoubleMatrix(1,1,mxREAL);

x =

mxGetScalar(prhs[0]);

y = mxGetPr(plhs[0]);

timestwo_alt(y,x);

}

3.

编译链接C语言的MEX文件源程序,在MATLAB的控制窗口中输入:mex timestwoalt.c生成一个名为timestwoalt.mexw32的MEX文件

4.

运行:在MATLAB的控制窗口中输入

x=2;

y=timestwoalt(x)

输出:y=4

MEX文件实现了一种C语言与MATLAB的接口,其实际的计算功能仍在C语言形式的计算子程序中完成,而入口子程序的功能是检查参数以匹配C语言的参数规范(how

to?)。

当有C语言编写的大型程序时,不必用MATLAB语言重新编写,只要将此C语言程序作为一个计算子程序,然后编写一个入口子程序,完成参数的匹配,然后编译成MEX文件即可。

MEX文件的另外一个功能是可以将MATLAB编程中的瓶颈问题,如多重循环等,将此类费时的指令用C语言实现,然后作必要的入口子程序,编译成MEX文件,可以有效地提高MATLAB的效率。

S-函数创建器限制了C语言S-函数的功能: 只能有一个输入信号和一个输出信号,而且只能处理double类型的数据!所以,可用性不大

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值