В настоящее время я работаю над проектом на C ++, и я на самом деле заинтересован в использовании структур данных Matlab вместо того, чтобы создавать свои собственные типы данных (такие как матрицы, массивы и т. Д.)
Есть ли способ легко использовать объекты Matlab в C ++? Я не против запускать Matlab в фоновом режиме, пока моя программа работает.
РЕДАКТИРОВАТЬ: отправной точкой является это: http://www.mathworks.co.uk/help/matlab/calling-matlab-engine-from-c-c-and-fortran-programs.html. Я продолжу читать это.
Вы можете использовать вместо броненосец C ++ математическая библиотека; используется НАСА, Boeing, Siemens, Deutsche Bank, MIT, CMU, Stanford и др.
У них есть хорошая документация и примеры, если вы больше знакомы с MATLAB / OCTAVE
http://arma.sourceforge.net/docs.html#syntax
Я бы предпочел использовать нативную библиотеку C ++, а не Matlab. Вероятно, это будет быстрее как для разработки, так и для выполнения.
Вы можете заниматься смешанным программированием на C ++ и Matlab. Есть два возможных пути:
Из написания расширений C ++ для Matlab я узнал одну вещь: использование объектов Matlab в C ++, вероятно, доставит вам значительную головную боль.
Структуры данных Matlab не представлены как классы C ++. Вместо этого вы получаете указатели, которыми вы можете манипулировать с помощью C-подобных API-функций.
Я рекомендую использовать нативную библиотеку C ++, такую как Eigen3.
Функциональность, на которую вы смотрите, на самом деле не предназначена для использования в качестве бесшовных объектов. В прошлом, когда я использовал его, я обнаружил, что гораздо проще делать части C, используя собственные массивы или стороннюю матричную библиотеку, а затем преобразовывать ее в матрицу Matlab для возврата.
Смешивание Matlab и C ++ обычно выполняется одним из двух способов:
При наличии программы на C ++ вызовите Matlab, чтобы выполнить специальную обработку. Это в основном полезно для быстрой разработки сложных матричных алгоритмов. Вы можете сделать это, либо вызвав полный механизм Matlab, либо упаковав фрагмент кода Matlab в общую библиотеку для распространения. (Распределенная версия упаковывает распространяемую копию среды выполнения Matlab, которая вызывается вашими скриптами).
Наличие сценария Matlab вызывает функцию C ++ для некоторой специальной обработки. Это часто используется для встраивания C ++ реализаций алгоритмов (таких как модели машинного обучения) или для обработки определенных оптимизаций.
Оба этих варианта использования имеют некоторые накладные расходы на передачу данных в / из Matlab.
Если вы просто ищете какой-нибудь матричный код для использования в C ++, вам лучше изучить различные матричные библиотеки C ++, например, реализованные в Увеличение.