Ответ 1
Компилятор MATLAB шифрует и архивирует ваш код MATLAB (который остается как код MATLAB .m
) и упаковывает его в оболочку тонкого исполняемого файла (.exe или .dll). Это доставляется конечному пользователю вместе с MATLAB Compiler Runtime (MCR). Если вы хотите, MCR также может быть упакован в исполняемый файл.
MCR свободно распространяемый, и вы можете думать об этом как по существу копию MATLAB без интерфейсного рабочего стола.
Когда пользователь запускает исполняемый файл, он дешифрует и расшифровывает код MATLAB и запускает его против MCR вместо MATLAB. Поэтому приложения, поставляемые с помощью этого метода, должны работать точно так же, как в MATLAB (включая одну и ту же скорость).
MATLAB Coder преобразует подмножество языка MATLAB в код C. Это можно затем использовать по-разному, включая возвращение в MATLAB в виде файла mex, скомпилированного с помощью компилятора C для вызова из другого приложения или доставляемого на встроенное устройство. Поскольку код C, а не код MATLAB, он часто (хотя и не всегда) работает намного быстрее, чем исходный код MATLAB. Код C не требует MCR. Поддерживаемый подмножество языка MATLAB очень обширен, но есть несколько заметных ограничений, которые вы хотели бы изучить, прежде чем совершать этот рабочий процесс. Полученный код - это код C, хотя он может создавать оболочку С++, если вам нужно использовать компилятор С++, а не компилятор C.
Компилятор MATLAB предназначен для использования, который вы хотите просто и (справедливо) совместно использовать приложение MATLAB, написанное с кем-то, у которого нет копии MATLAB. Поскольку развернутый код .m
зашифрован, его также можно использовать для совместного использования кода MATLAB при защите интеллектуальной собственности.
MATLAB Coder имеет другие варианты использования, такие как необходимость ускорения кода MATLAB путем преобразования в файл mex или необходимости создания кода C для другого приложения или встроенного устройства.
Если у вас есть более подробные вопросы, я бы рекомендовал вам просто вызвать MathWorks и спросить их.
Изменить: приведенная выше информация верна для версий MATLAB R2014b и ниже. По состоянию на MATLAB R2015a функциональность от MATLAB Compiler была ремиксирована с функциональностью из продуктов MATLAB Builder, а также появился новый продукт MATLAB Compiler SDK. > .
Как и в R2015a, Компилятор MATLAB работает так же, как описано выше (т.е. шифрует, архивирует и упаковывает, но не производит C), но теперь будет пакет как .exe и как Excel надстройка (.xla). До R2015a эта функциональность присутствовала в продукте MATLAB Builder EX для Excel.
Начиная с R2015a, Компилятор MATLAB больше не создает компоненты .dll. Эта функциональность была перенесена в новый продукт MATLAB Compiler SDK, который также включает в себя функции для создания сборников .NET и классов Java. До R2015a эта функциональность присутствовала в продуктах MATLAB Builder NE для .NET и MATLAB Builder JA для Java.
Другими словами:
В R2014b и ниже мы имели:
Компилятор MATLAB: создайте компоненты .exe и .dll
MATLAB Builder NE для .NET: создание сборников .NET
MATLAB Builder JA для Java: создание классов Java
MATLAB Builder EX для Microsoft Excel: создайте надстройки Excel.
В R2015a имеем:
Компилятор MATLAB: создавать .exe и надстройки Excel
MATLAB Compiler SDK: создать .dll, сборки .NET и классы Java.
Объем и возможности использования MATLAB Coder не изменились в этих версиях (хотя есть новые функции).
Изменить: Начиная с R2015b, MATLAB Compiler SDK также создает пакеты Python.
Дополнительная информация о различении MATLAB Coder и MATLAB Compiler для C/С++ можно найти здесь.
Таблица сравнения различных Продукты MATLAB для генерации кода.