Взаимодействие между Matlab и C #
-
10-07-2019 - |
Вопрос
После того, как вы заглянули в Интернет, похоже, что можно взаимодействовать между C # и Matlab. Мне интересно, имел ли кто-нибудь успех с этим и что они сделали для этого. Если возможно, как-нибудь вытащить его без использования COM. Спасибо за ваше время.
Решение
Да, вполне возможно. Хотя в итоге я использовал интерфейс C и обратился к нему с помощью DLL смешанного режима (и получил C # для вызова этого ... но это было потому, что я также взаимодействовал с некоторым другим кодом C). Это довольно просто. На компьютерах, на которых вы хотите запустить свою программу, вам нужно установить Matlab Runtime MCRInstaller.exe.
изменить: удалена неработающая ссылка
Другие советы
Начиная с выпуска MATLAB для R2009a, к объектам .NET можно получить доступ из MATLAB:
http://www.mathworks.com/help/techdoc/matlab_external/ brpb5k6.html р>
В более старых версиях MATLAB доступ к объектам .NET из MATLAB можно получить с помощью CCW:
http: //www.mathworks. ком / поддержка / решение / данные / 1-5U8HND.html? решение = 1-5U8HND р>
и движок MATLAB из .NET:
Вы также можете использовать MATLAB Builder NE для переноса m-кода в сборки .NET.
Да, мне удалось это сделать, и это было в основном безболезненно.
Вам нужно будет скомпилировать код MATLAB для .NET (как описано в предыдущих ответах), запустить установщик MCR, ссылаться на MWArray.dll и скомпилированный код dll в вашем проекте .NET - и все готово.
Единственное раздражение было приведение (и иногда несколько приведений!), что интерфейс заставляет вас (используя явное в операторах приведение)
Существует бесплатная оболочка .NET с открытым исходным кодом для 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.