3

我对使不同的编程语言相互交流相对较新,希望能得到一些帮助。基本上我有一个 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 相互通信并将变量传递给另一个?以及如何每个代码触发另一个代码,然后等待另一个代码先完成其计算,然后再继续?

4

1 回答 1

0

您最喜欢的搜索引擎的关键字是“fortran mex”。MATLAB 有一个非常好的文档/教程,你可以从这里开始:

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

但我相信它只有在你从 Matlab 调用 Fortran 子程序时才有效。您不能轻易地从 Fortran 代码中调用 Matlab .m 函数。因此,您的“主”程序必须是.m调用 MEX 文件(实际上是动态库)中定义的 Fortran 子例程的 Matlab 脚本。

于 2014-10-28T13:04:39.803 回答