Взаимодействие между Matlab и C # - PullRequest
20 голосов
/ 12 января 2009

После того, как заглянуть в Интернет, похоже, что можно взаимодействовать между C # и Matlab. Мне интересно, имел ли кто-нибудь успех с этим и что они сделали для этого. Если возможно, как-нибудь вытащить его без использования COM. Спасибо за ваше время.

Ответы [ 7 ]

20 голосов
/ 12 января 2009

Начиная с версии R2009a MATLAB, объекты .NET могут быть доступны из MATLAB:

http://www.mathworks.com/help/techdoc/matlab_external/brpb5k6.html

В старых версиях MATLAB доступ к объектам .NET из MATLAB можно получить с помощью CCW:

http://www.mathworks.com/support/solutions/data/1-5U8HND.html?solution=1-5U8HND

и движок MATLAB из .NET:

http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/matlab_external/f135590.html#f135616

Вы также можете использовать MATLAB Builder NE для переноса m-кода в сборки .NET.

http://www.mathworks.com/products/netbuilder/

10 голосов
/ 12 января 2009

Да, вполне возможно. Хотя в итоге я использовал интерфейс C и обратился к нему с помощью DLL смешанного режима (и получил C # для вызова этого ... но это было потому, что я также взаимодействовал с некоторым другим кодом C). Это довольно просто. На компьютерах, где вы хотите запустить вашу программу, вам нужно установить Matlab Runtime MCRInstaller.exe.

редактировать: удалена неработающая ссылка

3 голосов
/ 12 января 2009

Да, мне удалось это сделать, и это было в основном безболезненно.

Вы должны скомпилировать код MATLAB для .NET (как описано в предыдущих ответах), запустить установщик MCR, ссылаться на MWArray.dll и соответствующий код dll в вашем .NET проекте и все готово.

Единственное раздражение было приведение (и иногда несколько приведений!), Что интерфейс навязывает вам (используя явное в операторах приведение)

1 голос
/ 28 июля 2009

Существует бесплатная оболочка .NET с открытым кодом для Matlab, и она очень проста http://www.codeproject.com/KB/dotnet/matlabeng.aspx

Я использую это.

0 голосов
/ 01 февраля 2009

Я не уверен, насколько это относится к вам, но попробуйте заглянуть в исполняемые файлы Matlab или MEX В принципе, действительно легко написать программу на C или FORTRAN, включить несколько библиотек и функций тогда вы можете использовать вашу функцию C или FORTRAN в Matlab

0 голосов
/ 21 января 2009

В предварительном выпуске R2009a вы можете вызывать .net сборки из MATLAB.

0 голосов
/ 12 января 2009

Если вы готовы потратить деньги, это может быть то, что вам нужно:

http://www.mathworks.com/products/netbuilder/

Может генерировать оболочки для кода Matlab, которые позволяют вызывать его как из .NET, так и из COM.

...