Matlab в C С++ и C С++ в matlab
Кажется, есть несколько способов вызвать matlab в C С++ и вызвать C С++ в matlab. Пока я пытаюсь перечислить их здесь, пожалуйста, укажите это. Если я что-то пропущу.
Чтобы вызвать C С++ в matlab, существуют также два метода. Первый из них - вызов функций в совместно используемых библиотеках. Второй заключается в создании кода C С++ в двоичных MEX файлах, которые будут вызываться из командной строки MATLAB. Для первого метода общие библиотеки C являются общими, то есть без изменения их кода на языке C для matlab и скомпилированы из общего компилятора C, такого как gcc?
Для вызова кода matlab в C С++ доступны два метода. Первый - это механизм Matlab. Второй заключается в использовании MATLAB Compiler mcc для создания разделяемых библиотек C или С++ из вашего кода MATLAB.
Кроме того, matlab и C С++ могут связываться посредством записи и чтения данных в и из некоторого файла (например, файла mat, текстового файла).
Имея несколько способов достижения каждой из целей здесь, не могли бы вы рассказать мне, какие случаи лучше всего использовать, кто из них? т.е. вызывающие функции в C-библиотеках VS, строящих C С++-код в двоичные MEX файлы, Matlab engine VS компилирует Matlab-код в общую библиотеку C С++.
Спасибо и приветствую!
Ответы
Ответ 1
У меня есть только опыт работы с вызовами функций C или С++ из MATLAB. Мне кажется, что единственная разница между функциями вызова в общей библиотеке и функциями вызова из файла MEX заключается в том, что с помощью общей библиотеки вы должны вызывать эту функцию с помощью "calllib", которая является функцией типа командной строки, а функции MEX позволяют вы вызываете функции так, как если бы они были встроенными функциями, поэтому интерфейс немного чище.
Мое предложение - использовать файлы MEX, если
- Вы используете С++ (возможно, вам придется написать оболочку для использования С++ в общей библиотеке).
- Вы используете MATLAB как клей для большого количества оптимизированных подпрограмм C или С++. Вы хотите, чтобы их можно было назвать чисто.
Использовать общую библиотеку, если
- У вас уже есть существующая библиотека C, которая может быть использована без изменений.
- Вам нужно только небольшое количество вызовов функций C.
Действительно, это сводится к интерфейсу. Я лично предпочитаю путь к файлу MEX, потому что он обеспечивает самый чистый интерфейс от MATLAB до вашей функции C или С++. Вы можете назвать это как другую функцию со стандартными типами MATLAB. В общей библиотеке вам может потребоваться выполнить форматирование данных перед вызовом библиотечной функции
Ответ 2
Я думаю, что методы, которые вы назвали, верны (прошло некоторое время с тех пор, как я их использовал)
C-компилятор Matlab не особо особенный; можно использовать разные компиляторы. См. ссылка список поддерживаемых компиляторов. Это не включает gcc, но MS Visual studio включен. Вы столкнетесь с проблемами при связывании с предоставленными библиотеками.
В принципе: вызов matlab из C - это то, что вы сделали бы, если вам нужен жесткий интерфейс; например, если вы хотите синхронизировать 2 инструмента, или ваша S-функция (simulink) требует дополнительной информации. Но тогда, такой файл, возможно, называется Matlab/simulink.
Вызов c из matlab - это то, что вы хотите сделать, если вы пишете свои собственные S-функции или расширения для Matlab.
Выбор между C и С++ - ваш; если вы начинаете с чистого листа, я предлагаю вам использовать С++; вам не нужно использовать полную функциональность, но это позволяет больше свободы. В настоящее время также доступно больше библиотек для С++.
C - это язык выбора, если вам нужно перейти в очень разные среды; например, для компиляции C в DSP. Или, если у вас есть код устаревшего кода на C, чтобы начать с. Смешивание C и С++ возможно, но может быть немного громоздким; Я уверен, что вы найдете темы в StackOverflow только по этому вопросу.
Ответ 3
Обучение видео об использовании С++ в Matlab и Matlab в С++ (персидский язык)
Содержание:
1 - Введение
- Введение .wmv [02:00, 1.2 MB, 800x600]
2 - С++ в Matlab
- Основные понятия. wmv [09:04, 5.9 MB, 800x600]
- Конфигурация и простой проект [08:25, 13 МБ, 800x600]
- Образцы [02:17, 2.7 MB, 800x600]
- Отладка [02:38, 3.4 МБ, 800x600]
3 - Matlab в С++
- Matlab С++ Shared DLL.wmv [05:42, 6.8 MB, 800x600]
- Использование Matlab из vС++ [10:52, 14.2 MB, 800x600]
Смотреть или загружать из Google
Загрузить с 4Shared