matlab如何直接调用fortran的mex文件生成的变量
fortran语言的mex文件如下:subroutine mexFunction(nlhs,plhs,nrhs,prhs)
c ! 声明变量
integer y_pr
integer m,n,size
real*8 y(3,2)
integer plhs(*)
c ! 根据输入或根据需要,定义输出矩阵大小
m=3
n=2
size=m*n
c ! 创建需要返回的输出mxArray变量
plhs(1)=mxCreateDoubleMatrix(m,n,0)
c ! 获得指向数据的指针
y_pr=mxGetPr(plhs(1))
c ! 矩阵y像一般的fortran矩阵那样进行各种运算
y(1,1)=2.0
c ! 把数据复制到返回matlab数据mxArray中
call mxCopyReal8ToPtr(y,y_pr,size)
end subroutine
这段命令就是生成一个矩阵y=[2.0 0.0
0.0 0.0
0.0 0.0]
如果我想把这个矩阵保存于matlab工作空间,在matlab中直接对这个矩阵进行操作,比如:>> x=y*2.0
该如何实现呢? 如果你有时间的话,不妨看看matlab自己带的关于fortran语言编写mex的例子来加深自己对mex函数的了解。比如,在你上面的例子中,mexfunction函数的prhs参数它是干什么的的呢,当你有这样一个mex文件名为mymex,你该如何在matlab中调用mymex呢?你可以用x=mymex吗?如果可以的话,那个x和mexfunction函数的prhs有没有关系呢?有什么关系呢?这些问题搞清楚以后,你上面的问题就不是问题了。
我想这些都是应该花点时间搞清楚的东西,至于使用那个fortran编译器,其实并不十分重要。 matlab自己带的关于fortran语言编写mex的例子
怎么找到这些例子呢? help里呀
matlab自己带的关于fortran语言编写mex的例子
怎么找到这些例子呢?
qushen001 发表于 2011-3-27 21:46 http://forum.simwe.com/images/common/back.gif
页:
[1]