在让不同的编程语言相互通信方面,我还是个新手,希望能得到一些帮助。基本上我有一个Fortran代码和一个Matlab代码。这两个代码首先被初始化,然后必须按顺序运行。每个代码都需要来自另一个代码的输入。当这个过程重复得足够频繁时,就会达到一些收敛标准,迭代就会终止。让事情变得更复杂的是,Fortran代码不仅需要来自Matlab的输入,还需要来自它自己先前迭代的输入。这同样适用于Matlab。因此,据我所知,最好在迭代过程中保持两个程序都打开,因为我有很多变量,因此不能只将它们写在文本文件中,将它们交给另一个程序,并为下一次迭代保留它们。
所以从本质上讲,我正在尝试这样做:
初始化变量集合A、B、C和D
Fortran:
Input: A and B
Calculations …
Output: A (variables have now new values) and DMatlab:
Input: C and D
Calculations …
Output: C (variables have now new values) and B重复Fortran和Matlab,直到达到收敛标准。
所以我的问题是:如何使Matlab和Fortran相互通信,并将变量传递给彼此?每个代码如何触发另一个代码,然后等待其他代码先完成其计算,然后再继续?
发布于 2014-10-28 21:04:40
你最喜欢的搜索引擎的关键字是"fortran mex“。MATLAB有一个很好的文档/教程,可以上手here
MEX文件允许您从MATLAB中调用Fortran子例程
但我相信只有当你从Matlab中调用Fortran子例程时,它才能起作用。你不能轻易地从Fortran代码中调用Matlab .m函数。所以你的“主”程序必须是Matlab .m脚本,它调用MEX文件(实际上是一个动态库)中定义的Fortran子例程。
https://stackoverflow.com/questions/26603606
复制相似问题