Документация
MATLAB ® Время выполнения является автономным набором разделяемых библиотек, кода MATLAB и других файлов, который включает выполнение файлов MATLAB на компьютерах без установленной версии MATLAB. Приложения, которые используют артефакты, созданные с MATLAB Compiler SDK™ , требуют, чтобы доступ к соответствующей версии MATLAB Runtime запустился.
Конечные пользователи скомпилированных артефактов без доступа к MATLAB должны установить MATLAB Runtime на своих компьютерах или знать местоположение установленного на сети MATLAB Runtime . Инсталляторы, сгенерированные приложениями компилятора, могут включать инсталлятор MATLAB Runtime . Если вы скомпилировали свое использование артефакта mcc , необходимо направить конечных пользователей, чтобы загрузить инсталлятор MATLAB Runtime с веб-сайта https://www.mathworks.com/products/compiler/mcr .
Смотрите Установку и Сконфигурируйте MATLAB Runtime для получения дополнительной информации.
Как MATLAB Runtime Отличается от MATLAB ?
MATLAB Runtime отличается от MATLAB несколькими важными способами:
В MATLAB Runtime файлы MATLAB зашифрованы и неизменяемые.
MATLAB имеет настольный графический интерфейс. MATLAB Runtime имеет всю функциональность MATLAB без графического интерфейса.
MATLAB Runtime специфичен для версии. Необходимо запустить приложения с версией MATLAB Runtime , сопоставленного с версией MATLAB Compiler SDK , с которым это было создано. Например, если бы вы скомпилировали приложение с помощью версии 6.3 (R2016b) MATLAB Compiler™ , то у пользователей, которым не установили MATLAB, должно быть версия 9.1 установленного MATLAB Runtime . Использование mcrversion возвратить номер версии MATLAB Runtime .
Пути MATLAB в экземпляре MATLAB Runtime фиксируются и не могут быть изменены. Чтобы изменить их, необходимо сначала настроить их в MATLAB.
Факторы эффективности и MATLAB Runtime
MATLAB Compiler SDK был спроектирован, чтобы работать с большим спектром приложений, которые используют язык программирования MATLAB. Из-за этого библиотеки времени выполнения являются большими.
Поскольку технология MATLAB Runtime оказывает полную поддержку для языка MATLAB, включая Java ® язык программирования, запуская скомпилированное приложение берет приблизительно то же самое значение времени как стартовый MATLAB. Сумма ресурсов, использованных MATLAB Runtime , необходима для того, чтобы сохранить степень и функциональность полной версии MATLAB.
Вызовы в MATLAB Runtime сериализируются так, вызовы в MATLAB Runtime ориентированы на многопотоковое исполнение. Это может повлиять на эффективность.
Интегрируем MATLAB в С#.NET
В этой статье я постараюсь максимально полно и пошагово рассказать, как связать MATLAB с С#.NET и сделать приложение с интерфейсом на примере построения 3D-плоскости.
Зачем это нужно?
Очень часто перед программистом встает задача вычисления сложной математики. MATLAB в свою очередь является отличным средством для решения, но слаб в создании полноценного пользовательского приложения (можно воспользоваться инструментами GUI MATLAB’a, но это меня не устроило).
Инструменты
- Microsoft Visual Studio 2008 SP1
- MATLAB 2010a
- MATLAB Component Runtime
Шаг 1. Настройка линкера
Чтобы собрать dll-библиотеку MATLAB’а для интеграции в C#.NET, нужно настроить линкер, т.е. какой средой мы будем собирать проект. Для начала нужно установить среду выполнения MCR (MATLAB Component Runtime). Это набор dll-библиотек для полной поддержки языка MATLAB. Установочный файл можно найти: . \MATLAB\R2011b\toolbox\compiler\deploy\win32\MCRInstaller. Установка типовая, жмем next.
Для настройки линкера в командном окне MATLAB’а набираем mbuild -setup . Со всем соглашаемся и выбираем нужную нам среду, в нашем случае это MVS 2008 SP1. Получаем что-то похожее:
Please choose your compiler for building standalone MATLAB applications:
Would you like mbuild to locate installed compilers [y]/n? y
Select a compiler:
[1] Lcc-win32 C 2.4.1 in C:\PROGRA
1\MATLAB\R2010a\sys\lcc
[2] Microsoft Visual C++ 2008 SP1 in C:\Program Files\Microsoft Visual Studio 9.0
Please verify your choices:
Compiler: Microsoft Visual C++ 2008 SP1
Location: C:\Program Files\Microsoft Visual Studio 9.0
Are these correct [y]/n? y
Получаем радостное Done . Все — линкер настроен.
Шаг 2. Пишем m-функцию
Напишем функцию построения 3D-плоскости в заданных граничных условиях, для большего интереса вернем дескриптор функции.
function res=plane(strfunc,vx0,vx1,vy0,vy1,h)
vx=vx0:h:vx1;
vy=vy0:h:vy1;
figure(1)
res=ezsurfc(strfunc,vx,vy);
end
Как видно функция состоит из шести строчек кода, однако выполняет все вышеуказанные действия: в качестве входных параметров принимает символьную функцию ( strfunc ), начальные и конечные значения векторов границ плоскости (v x0,vx1,vy0,vy1 ), шаг сетки ( h ) и возвращает дескриптор ( res ).
Сохраняем данный код как plane.m.
Важно: компилятор MATLAB’а понимает только функции т.е., каждый сценарий должен начинаться с function (желательно заканчиваться end ) и быть отдельным m-файлом.
Шаг 3. Получаем динамическую библиотеку
Набираем в командном окне MATLAB’a deploytool . Создаем новый .NET Assembly проект MATLABplane, указываем размещение.

Далее создаем класс planeClass, добавляем в него plane.m и нажимаем кнопку build

После успешной компиляции создается интересующая нас библиотека MATLABplane.dll, находиться она будет здесь: . MATLABplane\distrib\MATLABplane.dll.
Шаг 4. Создаем приложение C#.NET
В MVS 2008 SP1 создаем приложение Windows Forms на С#.
Добавляем ссылки на библиотеки
Перед использованием методов проекта, необходимо добавить ссылки на скомпилированную библиотеку MATLABplane.dll и на библиотеку MWArray.dll, найти ее можно по адресу . \MATLAB\R2010a\toolbox\dotnetbuilder\bin\win32\v2.0. После добавления должно получиться:

Для использования библиотек в проекте необходимо добавить описание пространства имен:
using MathWorks.MATLAB.NET.Utility;
using MathWorks.MATLAB.NET.Arrays;
using MATLABplane;
Создаем форму
С помощью панели инструментов в конструкторе создаем форму будущего приложения.

Для создания формы были использованы следующие блоки: Label, TextBox, RichBox, Button.
Пишем код
- Получение функции в символьном виде и значений с текстовых полей
- Вызов метода plane из класса planeClass
- Получение выходного массива descriptor (тип MWNumericArray)
- Вывод массива descriptor в RichBox
Как видим, активно используется приведение типов, по схеме MWArray->MWNUmericArray->тип C#.
Компилируем проект и видим результат:
MATLAB Compiler Runtime
A runtime environment that allows the execution of MATLAB-based applications without having the original package installed on the target system
MATLAB Compiler Runtime bundles a set of components and libraries that aim to help you deploy applications built with Matlab, without having to install the package onto the target machine.
Matlab is an advanced programming language dedicated to technical and numerical computing, used widely for developing applications related to the fields of mathematics, economics, science and engineering.
Compiled applications and packages created with Matlab usually require the original development environment to be installed onto the target system and cannot be executed in its absence.
MATLAB Compiler Runtime aims to offer a convenient solution to this issue, removing all the compatibility problems that might occur and allowing end users to launch Matlab-based utilities on any computer, just as if Matlab was installed onto the system.
Components compiled with the Matlab Compiler cannot be opened unless the full package is installed on that specific computer. The advantage of MATLAB Compiler Runtime is that it can save you the time and the effort required for downloading and installing Matlab, which is only available as a trial version.
With this package installed on the system, each component runs against the runtime instead of Matlab, therefore each developer should include it in their setup packages.
The runtime comes in various editions that correspond to the version of Matlab in which the utility you want to run is created. Please note that components requiring a certain edition might not work with other versions.
MATLAB Compiler Runtime is an engine that includes the same shared libraries that Matlab uses to allow the execution of scripts, making them compatible with any PC they are launched on. Since it comes with no cost at all, it is a must-have tool for any Matlab developer.