Взаимодействие MATLAB с программами C / C ++ - PullRequest
2 голосов
/ 27 ноября 2010

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

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

Спасибо

Ответы [ 2 ]

1 голос
/ 27 ноября 2010

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

Что вы хотите сделать, это использовать Matlab Engine: http://www.mathworks.com/help/techdoc/matlab_external/f29148.html

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

0 голосов
/ 27 ноября 2010

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

...