2011-09-26 3 views
6

私は次の問題があります。私はいくつかの制御工学システムをシミュレートしたいと思います。それはかなり複雑なので、コンピュータを使用してfortran77コードにしかエクスポートできない(複雑な)方程式を導出しました。私の開発ではこれは問題ありません(Linuxマシン)。トランスレータf2cを使用して単一のFortranオブジェクトをコンパイルする方法は?

いいえ私はハードウェアでそれをやりたいのですが、ここではWindows OSを使用する必要があります。残念ながら、matlabはWindows上でgfortranをサポートしていません。したがって、私はそのボックスでfortranファイルをコンパイルできません。

私の考えは、Cコンパイラが勝つためにmatlabで利用できるようになりました。その他の(より良い)オプションはありますか?

私はいくつかのサブプログラムを以下のように持っています。

 SUBROUTINE sys_rhs (x, v, dx, param) 
     REAL*8 x(6) 
C  code is coming here 
     RETURN 
     END SUBROUTINE 

は、それは良い習慣です、それはCで書かれたインタフェース機能に機能sys_rhs__を使用するように動作しますか? 問題は、Windowsマシンに大量のアクセス権がないため、テストできないということです。それを試してみるとうまくいくはずなので、たくさん実験する必要はありません。

また、私は窓に何を必要としていますか?どこで入手できますか?

おかげ クリスチャン

+1

本当に最悪のオプションのようです。 MATLABのバージョンに応じて、* fortranコンパイラをサポートします。最後の10〜15年のfortranコンパイラはf77コードをコンパイルするので、MATLABで動作するコンパイラを見つけてそれを使用します。または、もしあなたがLinuxのmatlabのライセンスを持っているなら、intelのon linuxを使ってください。また、この男はgfortran/g95 + matlabをうまくプレイすることができたので、可能です。 – Rook

+0

私が書きましたように:Linuxでは全く問題はありません。私はgfortranを使ってコンパイルし、シミュレートすることができます。しかし、ハードウェアは勝利マシンに接続されています... http://www.mathworks.de/support/compilers/R2010a/win32.htmlではpropietary intel fortranコンパイラのみが言及されています(R2010aは管理者によってインストールされています)。 –

+0

@ChristianWol:あなたの質問から、Fortran MEXファイルの作成について話していますか? – Amro

答えて

0

答えは簡単でした。私はFortranコードに構文エラーがありました。 gfortranはそのような厳密な構文検査を行わないため、Fortranコードを正しく解釈します。入力ミスを除去した後、私はf2cでトランスコードすることに成功しました。

ありがとうございました

-1

このすべてへのよりよい解決策がある

は、C/C++で機能を実装して、dllファイルを生成するために、あなたのLinuxマシンまたはWindowsマシンを使用します。

matlabでは、DLLを読み込んでその中の関数を呼び出すことができます。

ここでは、matlabでdllを呼び出す方法を示す簡単なチュートリアルです。

http://www.mathworks.com/matlabcentral/fileexchange/15065-example-of-loading-c-dll-and-performance-comparison

+0

私が知っているようにmaxima(コンピュータ代数システム)のfortranにしかエクスポートできないので、この関数はfortranで実装されています。どのようにLinux上でDLLを生成するには? MinGW? –

+0

http://www.ibm.com/developerworks/linux/library/l-dll/index.html –

0

Intelはこの会社にリンクされていない;-)

PSいいえ、イム...彼らはテストのために自由のために与えるために使用されるかなり良いFortranコンパイラ(http://software.intel.com/en-us/articles/fortran-compilers/)を販売していますいずれにしても!

+0

申し訳ありませんが、私的なものではなく、大学の私の研究所のための専有ソフトウェアは、決してありません。彼らはそれを処理しなければならないので、彼らはそれに満足していません。 –

+1

MathlabがDLLのコードを扱うことができる場合(ここではMathlabの移植ではないFortran-to-Windowsの問題のためにここにいます)、私は既に言及したDLLを作成する方向を調べることを提案したいと思います。これは、Windows上で動作するMing​​GWまたはCygwinでg77を使用して動作するはずです。 – alk

0

GNU GCCコンパイラスイート(MinGWまたはCygwinを使用)を使用してMEXファイルをコンパイルすることができるgnumexプロジェクトをチェックし、g77を使用してFortranプログラムをコンパイルすることができます。

関連する問題