ご依頼内容

Fortranで書かれた計算プログラムがあるが、保守性の面で不安があり、また簡単に修正して試してみることもやりにくいので、Fortranのコードを、Matlabに移植したい。

課題

  • FortranのコードをMatlabに移植する際、標準関数の対応付けが、出来るかどうか?
  • Fortranでの配列で、負や0のインデックスをMatlabで、どう表現するか?
  • 古いFortranの記法で書かれたモジュールは、文法上、そのままMatlabに移植出来ないので、どうするか?
  • Fortranでの実行結果をリファエンスに、Matlabでの実行結果を比較し、全く同じ値が出るかどうか?

ソリューション

  • 標準関数の対応付けを自動で行うプログラムにより、まずはざっくりFortranからMatlabへ変換。
  • Fortranの配列で、負や0のインデックスを扱うため、Matlabで新規の変数型のオブジェクトを定義し、その変数型をインデックスとして利用することで、この問題を回避。
  • 古いFortranの記法で書かれたモジュールは、モジュールごとmex化して、Matlabから呼び出すことで対応。
  • Matlabでの高速化を施し、実行時間を短縮化。
  • Fortranでの実行環境を整備し、Fortranでの実行結果をリファレンスに、Matlabでの実行結果をモジュール単位で比較し、全く同じ値が出るかどうかを検証した。

結果

FortranのコードをMatlabに移植し、Fortranでの実行結果と、全く同じ結果を、Matlabに移植したコードから得ることが出来た。高速化により、実行時間を短縮した。

  • FortranやC/C++でのコードを、Matlabに移植したいとのご要望は、良く有ります。しかし、Matlabは特殊な言語であり、上記で示したような、配列のインデックスの件や、古い記法の件、また単純な移植では極端に処理速度が遅くなるなど、コードの移植は、見た目ほど簡単ではありません。
  • 移植は比較的難易度が高いタスクですが、コードの単純な移植だけで無く、アルゴリズム的に等価な処理と置き換えたり、mex化するなど、ソフトウェアの設計レベルでの判断が、非常に有効です。そうで無ければ、無用に開発期間がかかり、費用もかかってしまいます。
  • 弊社は、お客様のお持ちのコードの性質に合わせた解決方法を提案致しますので、FortranやC/C++の移植に関して、ご関心のある方は、お気軽にお問い合わせ下さい。

お問い合わせ

開発事例にご興味ありましたら、お気軽にお問い合わせ下さい。
下記の、「今すぐお問い合わせ」をクリックして、フォームにご記入下さい。
早急に回答致します。
 
LP_imasugu_toiawase