2010-11-27 10 views
2

こんにちは私はCプログラムの外部ソルバーとしてMATLABを使用する方法を知りたがっています。具体的には私のコードでは、 は、Ax = bの形式のいくつかの線形システムを解きたいと思っています。MATLABとC/C++プログラムとのインターフェイス

私は、他の方法、つまりMATLABルーチンでC関数を呼び出すことはMEXファイルを使用すると聞いていますが、実際にはどのようにMEXファイルを使用するかはわかりません。

はあなたに

+1

[CからMATLABコードを呼び出す方法](http://stackoverflow.com/questions/1513583/how-to-call-matlab-code-from-c) – gnovice

答えて

0

Lagerbaerが指摘するように、matlabエンジンを使用することができます。しかし時々、matlabプロセスのコマンドラインスタイルを呼び出すだけで便利な場合もあります。私はmxArraysなどを混乱させたくないときや、実行が必要なMATLABコードの量が本当に大きくなったときにこれを頻繁に使います。擬似コード:物事をテストするときに私のために

WriteArrayInMFormat("in.m", myInputNumbers); 
LaunchProcess("matlab", "-nodesktop -r \"myFunction('in.m')\" -logfile out.m"); 
ReadArrayInMFormat("out.m", myResult); 

これは特に便利です:代わりに、C/C++プログラムに私が何かを変更するたびに再コンパイルすることで、私はちょうどmyFunction.mファイル内のすべての変更を適用します。その時点で私はCプログラムを必要とせず、代わりにすべてがmatlabでテストすることができます。

1

ありがとう実際、MEXファイルは、MATLABでの外部Cライブラリを使用したい場合は、例えば、MatlabのプログラムでCコードを含めることができます。 http://www.mathworks.com/help/techdoc/matlab_external/f29148.html

代わりに、あなたがそのようなLAPACKおよびBLASとしてCで純粋に書かれている線形代数ライブラリを、使用することができます:あなたが何をしたいか

は、MATLABエンジンを使用しています。 (www.netlib.org)

+0

私はこのリンクを前に見ました2つの質問: – smilingbuddha

+0

1)MATLABをCコードで使用するためにMATLABを開いておく必要がありますか、またはMATLABを直接起動するのですか? – smilingbuddha

+0

2)コードをコンパイルするにはどうすればよいですか?具体的にはMakefileに何を書き込むべきですか?私はUbuntu 10.04を使用しています – smilingbuddha

関連する問題