Matlab и .NET 4.0 передача данных - PullRequest
5 голосов
/ 11 января 2012

У меня есть алгоритм, реализованный в Matlab, и я планирую развернуть его как DLL для интеграции с проектом .NET. Проект .NET - это приложение на основе графического интерфейса, небольшая часть которого состоит из отображения результатов, полученных при запуске алгоритма. Проблема, с которой я столкнулся на данный момент, заключается в том, что мне нужно отображать промежуточные результаты. Алгоритм довольно сложен и работает для ряда итераций (выбираемых пользователем), и в конце каждой итерации графический интерфейс пользователя должен обновляться с текущими данными.

Лучшее решение, которое я имею в виду на данный момент, заключается в том, чтобы поток Matlab действовал как tcp-клиент для локального tcp-сервера, который я запускал в своем приложении C # GUI. Однако я чувствую, что такой подход неэффективен. Мне было интересно, может ли это быть достигнуто другим способом.

1 Ответ

5 голосов
/ 11 января 2012

Прежде всего, судя по вашему вопросу, думаю, вы знаете о Matlab builder NE . Это позволяет вам развертывать .NET DLL. Если вы не знаете, попробуйте.

Относительно ваших опций:

1) Вы можете передать объект .NET в свой код Matlab, который будет служить средством связи. Создайте новый экземпляр этого класса и отправьте на ваш код Matlab в качестве входных данных. Код Matlab будет вызывать логику UpdateGui для каждой итерации. Следующий пример находится в C #

 class GuiUpdater{
      public void UpdateGui(int param1,int param2){
           //Do update logic here.
      }
 } 

2) Скомпилируйте вашу DLL как COM (это также возможно в Matlab Builder NE) и используйте коммуникацию COM.
3) Используйте файловую систему в качестве средства связи. Запишите файл в Matlab и прочитайте его в .NET.

...