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