3

私は、さまざまなプログラミング言語を相互に通信させることに比較的慣れていないので、助けていただければ幸いです。基本的に、Fortran コードと Matlab コードがあります。どちらのコードも最初に初期化され、次に順次実行する必要があります。各コードには、他のコードからの入力が必要です。このプロセスが何度も繰り返されると、何らかの収束基準に達し、反復が終了します。さらに複雑なことに、Fortran コードは Matlab からの入力だけでなく、それ自体の以前の反復からの入力も必要とします。同じことが Matlab にも当てはまります。したがって、私が見る限り、反復プロセス全体で両方のプログラムを開いたままにしておくのが最善です。変数がたくさんあるため、それらをテキストファイルに書き込んで他のプログラムに渡して保存することはできません。次の繰り返し。

だから本質的に私はこのようなことをしようとしています:

変数セット A、B、C、および D を初期化する

フォートラン:

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

マトラブ:

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 に答える