Вызов функции MATLAB из C # - PullRequest
12 голосов
/ 05 мая 2011

Я разработал функцию MATLAB и ищу способ вызова этой функции из другого приложения C #, передачи ей некоторых параметров и получения результатов в программе C #.

Я слышал, что могу использовать Динамический обмен данными (DDE) или COM-объекты, но могу ли я это сделать?

Ответы [ 3 ]

20 голосов
/ 06 мая 2011

В MATLAB Central .

есть хороший пример.

В нем показано три способа связи с MATLAB :

  1. COM
  2. MATLAB .NET Bulider
  3. Компилятор MATLAB

COM (у меня нет с этим никакого опыта)

Минусы: MATLAB необходимо установить на целевой компьютер.

MATLAB .NET Builder компилирует ваш код MATLAB в сборку .NET, и вы можете использовать его напрямую.

Плюсы: MATLAB не требуется устанавливать на целевой компьютер

Минусы: это дорого

Компилятор MATLAB компилирует ваш код MATLAB в библиотеку C / C ++ или EXE-файл. Вы можете использовать его через P / Invoke .

Плюсы: MATLAB не требуется устанавливать на целевой компьютер

Минусы: это дорого, много P / Invoke.

5 голосов
/ 06 мая 2011

Существует третий вариант: делегаты .Запуск MATLAB -> загрузить сборку .NET -> выполнить функцию .NET с дескриптором делегата для функции MATLAB.

2 голосов
/ 29 августа 2015

На этом сайте есть отличный пример по настройке всего. Вы можете использовать инструмент развертывания MATLAB .NET.

Вам нужно

  • Установить MCR (Matlab Compiler Runtime).
  • Развертывание вашей функции Matlab в .NET Assembly с использованием Matlab Deploy Инструмент. Это создаст файл .dll.
  • Добавьте ссылку .dll в ваш проект .NET.
  • Добавить ссылку на MATLAB.NET.

Преимущество этого метода состоит в том, что целевая машина не требует установки MATLAB, но, с другой стороны, ее выполнение довольно дорого.

...