Fortran和Matlab之间的通信

时间:2014-10-28 08:19:14

标签: matlab fortran iteration communication data-exchange

我对使不同的编程语言相互沟通相对较新,并希望得到一些帮助。 基本上我有一个Fortran代码和一个Matlab代码。两个代码首先被初始化,然后必须顺序运行。每个代码都需要来自另一个代码的输入。当该过程经常重复时,达到一些收敛标准并终止迭代。为了使事情变得更复杂,Fortran代码不仅需要来自Matlab的输入,还需要来自其先前的迭代。 Matlab也是如此。因此,据我所知,最好在整个迭代过程中保持两个程序都打开,因为我有很多变量,因此不能只将它们写在文本文件中,将它们交给另一个程序并保存它们下一次迭代。

所以基本上我试图做这样的事情:

初始化变量集A,B,C和D

的Fortran:

Input: A and B
Calculations …
Output: A (variables have now new values) and D

Matlab的:

Input: C and D
Calculations …
Output: C (variables have now new values) and B

重复Fortran和Matlab,直到达到收敛标准。

所以我的问题是:如何使Matlab和Fortran相互通信并将变量传递给另一个?每个代码如何触发另一个代码,然后等待其他代码先完成计算再继续?

1 个答案:

答案 0 :(得分:0)

您最喜爱的搜索引擎的关键字是“fortran mex”。 MATLAB有一个非常好的文档/教程,你可以启动here

  

MEX文件允许您从MATLAB调用Fortran子例程

但我相信只有从Matlab调用Fortran子程序才有效。您无法从Fortran代码轻松调用Matlab .m函数。所以你的“主”程序必须是Matlab .m脚本,它调用MEX文件中定义的Fortran子程序(实际上是一个动态库)。