Вызов функции MATLAB из C #
-
29-10-2019 - |
Вопрос
Я разработал функцию MATLAB и ищу способ вызвать эту функцию из другого приложения C # и передать ему некоторые параметры и получить результаты в программе C #.
Я слышал, что могу использовать динамический обмен данными (DDE) или COM-объекты, но могу ли я это сделать?
Решение
Хороший пример есть в MATLAB Central .
Здесь показаны три способа взаимодействия с MATLAB :
- COM
- MATLAB .NET Bulider
- Компилятор MATLAB
COM (у меня нет опыта работы с ним)
Минусы: на целевом компьютере должен быть установлен MATLAB.
MATLAB .NET builder компилирует ваш код MATLAB в сборку .NET, и вы можете использовать его напрямую.
Плюсы: MATLAB не требуется устанавливать на целевой компьютер
Минусы: дорого
Компилятор MATLAB компилирует ваш код MATLAB в библиотеку C / C ++ или EXE-файл. Вы можете использовать его через P / Invoke .
Плюсы: MATLAB не требуется устанавливать на целевой компьютер
Минусы: дорого, много P / Invoke.
Другие советы
Существует третий вариант: делегаты .Запуск MATLAB -> загрузка сборки .NET -> выполнение функции .NET с дескриптором делегата функции MATLAB.
На этом сайте есть отличный пример по настройке всего.Вы можете использовать инструмент развертывания MATLAB .NET.
Вам необходимо
- Установите MCR (среда выполнения компилятора Matlab).
- Разверните свою функцию Matlab в .NET Assembly с помощью Matlab Deploy. Инструмент.Будет создан файл .dll.
- Добавьте ссылку на DLL в свой проект .NET.
- Добавить ссылку на MATLAB.NET.
Преимущество этого метода в том, что на целевой машине не требуется установка MATLAB, но, с другой стороны, выполнение довольно дорогое.