找回密码
 注册
Simdroid-非首页
查看: 78|回复: 3

matlab如何直接调用fortran的mex文件生成的变量

[复制链接]
发表于 2011-3-27 20:16:56 | 显示全部楼层 |阅读模式 来自 大连理工大学
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
该如何实现呢?
发表于 2011-3-27 20:38:57 | 显示全部楼层 来自 新加坡
Simdroid开发平台
如果你有时间的话,不妨看看matlab自己带的关于fortran语言编写mex的例子来加深自己对mex函数的了解。比如,在你上面的例子中,mexfunction函数的prhs参数它是干什么的的呢,当你有这样一个mex文件名为mymex,你该如何在matlab中调用mymex呢?你可以用x=mymex吗?如果可以的话,那个x和mexfunction函数的prhs有没有关系呢?有什么关系呢?这些问题搞清楚以后,你上面的问题就不是问题了。

我想这些都是应该花点时间搞清楚的东西,至于使用那个fortran编译器,其实并不十分重要。

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2011-3-27 21:46:26 | 显示全部楼层 来自 大连理工大学
matlab自己带的关于fortran语言编写mex的例子
怎么找到这些例子呢?
回复 不支持

使用道具 举报

发表于 2011-3-27 22:16:26 | 显示全部楼层 来自 黑龙江哈尔滨
help里呀

matlab自己带的关于fortran语言编写mex的例子
怎么找到这些例子呢?
qushen001 发表于 2011-3-27 21:46
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-4 23:31 , Processed in 0.045665 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表