ご依頼内容
- 例1:Fortranで書かれたモジュールを、mex化したい。
- 例2:Cで書かれたモジュールを、mex化したい。
課題
- Fortran/C/C++のコードをmex化する際、入出力の変数の受け渡しをどうするか?
- Matlabのバージョンや、コンパイラのバージョン、OSのバージョン等、ハードウェア依存の部分を、どうクリアするか?
- Fortran/C/C++のモジュールが、他のライブラリ(DLL等)を呼んでいた場合、きちんと動作するのか?
- 動作がおかしい場合、どのようにデバッグするのか?
ソリューション
- mex化の際の、入出力の変数の受け渡しは、ゲートウェイ関数の記述で行うが、変数の選択(変数型)等で気をつけること。
- Matlabやコンパイラのバージョンを、適切に選択すること。
- Fortran/C/C++のモジュールが、他のライブラリを呼んでいる場合でも、動作を保証すること。
- デバッグは、各開発言語のデバッガを、Matlabのプロセスにアタッチして、デバッグを行うこと。
結果
Fortran/C/C++で書かれたコードをmex化し、リファレンスと全く同じ値を得ることが出来た。
- 処理の高速化や、どうしてもネイティブコードを使う必要がある場合に、mex化が選択肢として挙げられます。
- しかし、素直に動作してくれる場合は良いですが、ゲートウェイ関数の定義や、Matlabのバージョン、各コンパイラのバージョン、OSのバージョン、他のライブラリのバージョン等で、気をつけなければならない部分が多々あります。
- また、mex部分のデバッグは、各開発言語のデバッガを、Matlabのプロセスにアタッチして、デバッグを行う必要があり、ある種のノウハウが必要となります。
- 正直、ハマると面倒な部分が多々有るのですが、弊社は今までに、様々なmex化を行い、ノウハウを蓄積しています。ご興味ありましたら、お気軽にお問い合わせ下さい。
本事例のご利用サービス
お問い合わせ
開発事例にご興味ありましたら、お気軽にお問い合わせ下さい。
下記の、「今すぐお問い合わせ」をクリックして、フォームにご記入下さい。
早急に回答致します。