matlab 和compaq visual fortran6.5混合编程问题
matlab怎样调用fortran程序啊?或者fortran怎样调用matlab程序?我想在matlab中运行mex-setup,但是下面没有列出fortran编译器啊。多谢各位指点啊,最好具体点。 利用Mex 接口函数生成可以被Matlab 识别的Fortran-Mex 文件所谓Mex 接口函数,实际是一种动态链接的子程序,同Matlab的内置函数一样,能被Matlab 的解释器自动装入、运行。Matlab中Mex文件的扩展名可以为.Mex或.DLL,它是由Fortran经过编译生成的Matlab动态链接子程序,需要强调的是Fortran下Mex文件的数据类型只能是双精度型(Double Precision),不像C语言那样,有Matlab支持的数据类型。
通常一个典型的Fortran-Mex 文件由两部分组成,一个就是包含你要实现的计算功能的子例行程序(不能是函数),该子例行程序实际上就是纯Fortran环境下编写的源程序,而另一个同时也是最主要的部分就是入口程序,该入口程序负责Matlab与Fortran语言之间的数据输入与输出,也即可以在Matlab的环境下输入变量,通过该接口程序传给Fortran进行运算,运算结果赋给输出变量,然后通过该接口程序,返回到Matlab进行输出,这样就完成了Matlab对Fortran函数的调用,典型的调用过程可见图1。
能够实现接口程序的函数是MexFunction,它由四个参数prhs, nrhs, plhs, nlhs 构成,这里:
prhs―输入变量的阵列;nrhs―输入变量的个数;
plhs―输出变量的阵列;nlhs―输出变量的个数;
以已经编译通过的一段Fortran-Mex程序为例,说明为了实现Matlab对Fortran函数的直接调用,需要在Fortran程序的基础上附加的入口程序,该程序用来已知溴化锂水溶液的温度,浓度求焓值,具体程序参见附录。
3) Fortran 编译器(complier)的设置
在安装了Compaq Fortran version 6.x,Digital Fortran version 5.x,或Fortran powerstation 4.0(或其他版本)的前提下,使用Mex?setup命令即可实现Fortran 编译器的设置。运行后,显示如下结果:
>>Mex -sutup
Select a compiler:
Compaq Fortran version 6.5 in C:\Program Files\Microsoft Visual Studio
Lcc C version 2.4 in C:\MATLAB6P1\sys\lcc
Microsoft Visual C/C++ version 6.0 in C:\Program Files\Microsoft Visual Studio
None
由于本机安装的Fortran版本是Compaq Fortran version 6.5选择,然后选择‘y’
确定项,就可完成Fortran默认编译器的设置。 http://co.163.com/neteaseivp/resource/paper/doc/20049301096521515032/image002.jpg
[ 本帖最后由 风花雪月 于 2008-10-28 17:19 编辑 ] 非常感谢楼上的回答,但是我在matlab中使用mex -setup命令,结果中为什么没有fortran选择项啊?
mex -setup
Please choose your compiler for building external interface (MEX) files:
Would you like mex to locate installed compilers /n? y
Select a compiler:
Lcc C version 2.4.1 in D:\PROGRAM\MATLAB71\sys\lcc
None
Compiler: 我装的是compaq fortran 6.5,与matlab装在同一盘下 这是环境变量配置问题
有两种选择
(1)Matlab下编译
(假设matlab安装目录为 %matlab%)
1.打开%matlab%\bin\win32\mexopts\df60engmatopts.bat
将13行中的 set DF_ROOT=%DF_ROOT %
改为set DF_ROOT =C:\Program Files\Microsoft Visual Studio (CVF安装目录)
2.将matlab的工作目录改为你的fortran源代码存放的目录
3.在matlab下运行 mex –f df60engmatopts.bat exsample.for
(假设源文件为exsample.for 其中有关于matlab引擎的操作)
(2)CVF下编译
1.新建一个项目
2.在tools->directory 里设置 include 和 lib目录
记住要包括以下目录
include ->C:\Program Files\Microsoft Visual Studio\DF98\Include
include->C:\Program Files\Microsoft Visual Studio\DF98\IMSL\Include
include->D:\MATLAB\EXTERN\INCLUDE
lib->D:\MATLAB\EXTERN\LIB\WIN32
lib->D:\MATLAB\EXTERN\LIB\WIN32\DIGITAL\DF60
lib->C:\Program Files\Microsoft Visual Studio\DF98\IMSL\Lib
lib->C:\Program Files\Microsoft Visual Studio\DF98\Lib
3. 在project->setting->link->Object/library modules里添加libmx.lib libmat.
lib libeng.lib 楼上说的对,是环境变量的问题,可能是我安装Fortran的时候没有进行环境变量的配置,我重装进行了配置就好了。谢谢两位的回答。
页:
[1]