こんにちは、C プログラムから MATLAB を外部ソルバーとして使用する方法を知りたいと思っていました。具体的には、私のコードでは、Ax=b の形式のいくつかの線形システムを解きたいと考えています。
逆に言うと、MATLAB ルーチンで C 関数を呼び出すには MEX ファイルを使用すると聞きましたが、Mex ファイルの使用方法もよくわかりません。
ありがとうございました
実際、MEX ファイルを使用すると、たとえば Matlab で外部 C ライブラリを使用する場合などに、Matlab プログラムに C コードを含めることができます。
やりたいことは、Matlab エンジンを使用することです: http://www.mathworks.com/help/techdoc/matlab_external/f29148.html
別の方法として、純粋に C で記述された線形代数ライブラリ (LAPACK や BLAS など) を使用することもできます。( www.netlib.org )
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 でテストできます。