Interoperando tra Matlab e C #
-
10-07-2019 - |
Domanda
Dopo aver dato una sbirciatina su Internet sembra che sia possibile interagire tra C # e Matlab. Mi chiedo se qualcuno ha avuto successo con esso e cosa hanno fatto per farlo. Se possibile, in qualche modo tirarlo fuori senza l'uso di COM. Grazie per il tuo tempo.
Soluzione
Sì, abbastanza possibile. Anche se ho finito per usare l'interfaccia C e chiamarla usando una DLL in modalità mista (e ottenere C # per chiamarla in questo ... ma questo perché stavo anche interfacciando con qualche altro codice C). È abbastanza semplice. Sui computer su cui desideri eseguire il programma, dovrai installare Matlab Runtime MCRInstaller.exe.
modifica: rimosso link non funzionante
Altri suggerimenti
A partire dalla versione R2009a di MATLAB, è possibile accedere agli oggetti .NET da MATLAB:
http://www.mathworks.com/help/techdoc/matlab_external/ brpb5k6.html
Nelle versioni precedenti di MATLAB, è possibile accedere agli oggetti .NET da MATLAB utilizzando CCW:
http: //www.mathworks. com / support / soluzioni / dati / 1-5U8HND.html? soluzione = 1-5U8HND
e il motore MATLAB di .NET:
È inoltre possibile utilizzare MATLAB Builder NE per avvolgere m-code negli assembly .NET.
Sì, sono riuscito a farlo ed è stato per lo più indolore.
Dovresti compilare il tuo codice MATLAB per .NET (come spiegato nelle risposte precedenti), eseguire il programma di installazione MCR, fare riferimento a MWArray.dll e la dll del codice rispettato nel tuo progetto .NET e via.
L'unico fastidio era il casting (e talvolta i casting multipli!) che l'interfaccia ti impone (usando esplicitamente negli operatori di cast)
Esiste un wrapper .NET gratuito e open source per Matlab ed è molto semplice: http://www.codeproject.com/KB/dotnet/matlabeng.aspx
Lo uso.
Nella pre-release R2009a è possibile chiamare assembly .net da MATLAB.
Non sono sicuro di quanto questo valga per te, ma prova a esaminare gli eseguibili matlab o MEX Fondamentalmente, è davvero facile scrivere un programma in C o FORTRAN, includere alcune librerie e funzioni, quindi puoi usare la tua funzione C o FORTRAN in matlab
Se sei disposto a spendere soldi, questo potrebbe essere ciò di cui hai bisogno:
http://www.mathworks.com/products/netbuilder/
Può generare wrapper per il codice Matlab che gli consentono di essere chiamato sia da .NET che da COM.