gpt4 book ai didi

matlab - Fortran与Matlab的通信

转载 作者:行者123 更新时间:2023-12-02 09:41:32 26 4
gpt4 key购买 nike

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

最佳答案

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

A MEX-file lets you call a Fortran subroutine from MATLAB

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

关于matlab - Fortran与Matlab的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26603606/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com