Вызов функции 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, но с нижней стороны выполнение довольно дорого.