gmesh 与matlab有接口吗,Fortran和Matlab交互接口总结之一

1). mexCallMATLAB 用于调用Matlab的内建函数、运算符,用户自定义的Matlab M文件以及MEX文件。语法:integer*4 function

mexCallMATLAB(nlhs,plhs,nrhs,prhs,name)

integer*4 nlhs,nrhs,plhs(*),prhs(*)

character* (*) name解析:它是一个函数子程序,其四个形式参数含义分别为:name为字符串类型,是用户希望执行的Matlab内建函数或其他一些文件和命令名字。nlhs为整数类型,是用户执行name所包含命令时期望输出参数个数,系统规定nlhs不超过50。plhs(*)为包含命令name输出参数内存地址整数类型数组,其中数组元素plhs(nlhs)包含了name第nlhs个输出参数内存地址。nrhs为整数类型,是用户期望执行命令name的输入元素个数,nrhs不超过50。prhs(*)为包含命令name输入参数内存地址整数类型数组,其中数组元素prhs(nrhs)包含了name第nrhs个输入参数内存地址。如果mexCallMATLAB调用命令正确执行,返回值为0;反之,返回值为非0。2). mexEvalString

用于输入一个表达式命令到Matlab]工作环境中执行。语法:integer*4 function mexEvalString

(command)

character* (*) command解析:这个函数与函数mexCallMATLAB的功能大致相同,不同是函数mexCallMATLAB不但可以用来执行Matlab命令,而且可以通过参数nlhs和plhs从Matlab环境中得到计算结果,用于MEX文件后续计算;而函数mexEvalString则没有这个功能,只能用于向Matlab发送计算指令,无法取得计算结果,且出现命令右侧参数必须在当前的mex文件工作空间中已经存在。3). mexGetFull 用于从Matlab工作空间中获得一个双精度类型阵列全部数据,包括实部和虚部。语法:integer*4 function mexGetFull

(name,m,n,pr,pi)

integer*4 m,n,pr,pi

character* (*) name解析:其五个形式参数含义分别为name是一个字符串变量,为希望获取阵列名字。m为整型变量,为name代表阵列行向量数。n为整型变量,为name代表阵列列向量数。pr为整型变量,为name代表阵列实部数据指针。pi为整型变量,为name代表阵列虚部数据指针。它为用户提供了一种直接从Matlab工作空间获得双精度类型阵列方法,它通过mxArray结构体,将阵列维数和数据指针存入变量m、n、pr和pi中,接下来可用API函数mxCopyPtrToReal8就可以获得变量pr、pi所存在内存地址数据了。在阵列为实数类型时,变量pi中虚部数据指针为0。如果函数子程序mexGetFull成功执行,其返回值为0;反之,则为1。4). mxCalloc 动态分配内存语法:integer*4 function mxCalloc

(n,size)

integer*4 n,size解析:通过函数mxCalloc,用户可以在Matlab接口应用程序中方便完成动态内存分配任务。形参n指明了所分配内存中存放元素数量,而形参size则说明了每一个元素所占用字节数,所以实际分配内存字节数为n*size。如果函数执行成功,将返回一个指向所分配内存起始字节地址指针;如果函数执行失败,在mex文件中,函数将终止整个程序运行,并将控制返回到Matlab命令提示符下。函数Malloc的执行,将自动完成下面3个任务分配足够堆内存;将内存中所有n个元素初始化为0;在Matlab的内存自动管理机制中对分配内存进行注册,以便于在程序结束时进行自动释放。5). mxCopyPtrToReal8

将某个阵列实数或虚数部分数据复制到一个Fortran语言实数类型数组中语法:subroutine mxCopyPtrToReal8

(px,y,n)

real*8 y(n)

integer*4 px,n解析:函数mxCopyPtrToReal8在Matlab接口应用程序中可直接用call进行调用。通过它,用户可以将某个阵列实数或虚数部分数据复制到一个Fortran语言实数类型数组中,函数三个形参含义为px为指向某个阵列实数或虚数部分数据指针y为一个Fortran语言实数类型数组n为希望复制元素个数

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值