Использовать структуры данных Matlab в C ++?

В настоящее время я работаю над проектом на C ++, и я на самом деле заинтересован в использовании структур данных Matlab вместо того, чтобы создавать свои собственные типы данных (такие как матрицы, массивы и т. Д.)

Есть ли способ легко использовать объекты Matlab в C ++? Я не против запускать Matlab в фоновом режиме, пока моя программа работает.

РЕДАКТИРОВАТЬ: отправной точкой является это: http://www.mathworks.co.uk/help/matlab/calling-matlab-engine-from-c-c-and-fortran-programs.html. Я продолжу читать это.

1

Решение

Вы можете использовать вместо броненосец C ++ математическая библиотека; используется НАСА, Boeing, Siemens, Deutsche Bank, MIT, CMU, Stanford и др.

У них есть хорошая документация и примеры, если вы больше знакомы с MATLAB / OCTAVE
http://arma.sourceforge.net/docs.html#syntax

Я бы предпочел использовать нативную библиотеку C ++, а не Matlab. Вероятно, это будет быстрее как для разработки, так и для выполнения.

3

Другие решения

Вы можете заниматься смешанным программированием на C ++ и Matlab. Есть два возможных пути:

  1. Позвоните в MATLAB Engine напрямую: обратитесь к эта почта для получения дополнительной информации. Matlab будет работать в фоновом режиме.

  2. Распространите MATLAB в независимую общую библиотеку: посмотрите Вот о том, как это сделать (с подробными шагами и примером).

1

Из написания расширений C ++ для Matlab я узнал одну вещь: использование объектов Matlab в C ++, вероятно, доставит вам значительную головную боль.

Структуры данных Matlab не представлены как классы C ++. Вместо этого вы получаете указатели, которыми вы можете манипулировать с помощью C-подобных API-функций.

Я рекомендую использовать нативную библиотеку C ++, такую ​​как Eigen3.

1

Функциональность, на которую вы смотрите, на самом деле не предназначена для использования в качестве бесшовных объектов. В прошлом, когда я использовал его, я обнаружил, что гораздо проще делать части C, используя собственные массивы или стороннюю матричную библиотеку, а затем преобразовывать ее в матрицу Matlab для возврата.

Смешивание Matlab и C ++ обычно выполняется одним из двух способов:

  1. При наличии программы на C ++ вызовите Matlab, чтобы выполнить специальную обработку. Это в основном полезно для быстрой разработки сложных матричных алгоритмов. Вы можете сделать это, либо вызвав полный механизм Matlab, либо упаковав фрагмент кода Matlab в общую библиотеку для распространения. (Распределенная версия упаковывает распространяемую копию среды выполнения Matlab, которая вызывается вашими скриптами).

  2. Наличие сценария Matlab вызывает функцию C ++ для некоторой специальной обработки. Это часто используется для встраивания C ++ реализаций алгоритмов (таких как модели машинного обучения) или для обработки определенных оптимизаций.

Оба этих варианта использования имеют некоторые накладные расходы на передачу данных в / из Matlab.

Если вы просто ищете какой-нибудь матричный код для использования в C ++, вам лучше изучить различные матричные библиотеки C ++, например, реализованные в Увеличение.

1
По вопросам рекламы [email protected]