Взаимодействие между Matlab и C#

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

7 ответов


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

edit: удалена сломанная ссылка


начиная с выпуска 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/


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

вам нужно будет скомпилировать код MATLAB для .NET (как описано в pervious answers), запустить установщик MCR, ссылку MWArray.dll и DLL кода в вашем .NET-проекте, и вы идете.

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


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

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


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


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


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

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

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