2011-05-05 34 views
11

Desarrollé una función MATLAB, y estoy buscando una forma de llamar a esa función desde otra aplicación C# y pasarle algunos parámetros y obtener los resultados en el programa C#.Llamar a una función MATLAB desde C#

Escuché que puedo usar Dynamic Data Exchange (DDE) o objetos COM, pero ¿puedo hacerlo?

+1

¿Intentó leer sobre el atributo PInvoke en la documentación de C#? Te dará una idea de llamar objetos COM desde .NET World. – kanchirk

+0

Puede pasar identificadores de función de matlab a C# delegados.Ver mi publicación similar: http://stackoverflow.com/questions/31408624/passing-matlab-methods-as-delegates-to-net-object – CodyF

Respuesta

20

Hay un buen ejemplo en el MATLAB Central.

Se muestra tres maneras de cómo comunicarse con MATLAB:

  1. COM
  2. MATLAB .NET Bulider
  3. compilador de MATLAB

COM (no tengo ninguna experiencia con él)

Contras: M ATLAB debe instalarse en la computadora de destino.

El constructor .NET de MATLAB compila su código MATLAB en el ensamblado .NET y puede usarlo directamente.

Pros: MATLAB no se requiere para ser instalado en el equipo de destino

Contras: Es caro

MATLAB compilador compila su código de MATLAB en una biblioteca de C/C++ o EXE. Puede usarlo a través del P/Invoke.

Pros: MATLAB no se requiere para ser instalado en el equipo de destino

Contras: Es caro, una gran cantidad de P/Invoke.

+0

debe señalar que para la segunda y tercera opción, los binarios producidos requieren la [MCR] (http://www.mathworks.com/products/compiler/mcr/) para instalar en la máquina de destino (MCR está disponible gratuitamente) – Amro

+2

El enlace está ahora muerto :-( –

5

Hay una tercera opción: delegates. Iniciando MATLAB -> carga el ensamblado .NET -> ejecuta la función .NET con el manejador de delegado en una función MATLAB.

2

Hay un gran ejemplo on this site en la configuración de todo. Puede usar la herramienta de despliegue MATLAB .NET.

Necesitas

  • Instalar MCR (Matlab Compiler Runtime).
  • Despliegue su función Matlab en .NET Assembly utilizando Matlab Deploy Herramienta. Esto creará un archivo .dll.
  • Agregue la referencia .dll dentro de su proyecto .NET.
  • Agregue referencia a MATLAB.NET.

La ventaja de este método es que la máquina de destino no requiere la instalación de MATLAB, pero a la baja la ejecución es bastante costosa.

Cuestiones relacionadas