Взаимодействие MATLAB с программами на C/C++

Привет, я хотел знать, как использовать MATLAB в качестве внешнего решателя из программы C. В частности, в моем коде я хочу решить несколько линейных систем вида Ax=b.

Я слышал, что для того, чтобы пойти другим путем, а именно для вызова функций C в подпрограмме MATLAB, используются файлы MEX. Но я также не совсем уверен, как использовать файлы MEX.

Спасибо


person smilingbuddha    schedule 27.11.2010    source источник
comment
возможный дубликат Как вызвать код MATLAB из C?   -  person gnovice    schedule 27.11.2010


Ответы (2)


вы можете использовать движок 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.

person stijn    schedule 27.11.2010

На самом деле файлы MEX позволяют вам включать код C в программы Matlab, например, если вы хотите использовать внешние библиотеки C в Matlab.

Вам нужно использовать Matlab Engine: http://www.mathworks.com/help/techdoc/matlab_external/f29148.html

В качестве альтернативы вы можете использовать библиотеки линейной алгебры, написанные исключительно на C, такие как LAPACK и BLAS. (www.netlib.org)

person Lagerbaer    schedule 27.11.2010
comment
Я видел эту ссылку раньше, и я следовал командам, которые они упомянули... Но они не работали для меня.... 2 вопроса: - person smilingbuddha; 28.11.2010
comment
1) Должен ли MATLAB быть открытым, чтобы код C мог использовать MATLAB, или MATLAB запускается напрямую? - person smilingbuddha; 28.11.2010
comment
2) Как мне скомпилировать код: Что именно я должен написать в Makefile? Я использую Убунту 10.04 - person smilingbuddha; 28.11.2010