Pregunta

Parece que hay varias maneras de llamar a MATLAB en C ++ y C para llamar a C C ++ en Matlab. Mientras que intento para enumerarlos aquí, por favor señalarlo Si falto algo.

Para llamar a C C ++ en Matlab, también hay dos métodos. La primera de ellas es que las funciones de llamada en C bibliotecas compartidas. El segundo es para construir código C ++ en C binarios archivos MEX, que se puede llamar desde la línea de comandos de MATLAB. Para el primer método, son la C bibliotecas compartidas son sólo las generales, es decir, sin cambio en su código C para MATLAB y compilados a partir del compilador C en general como gcc?

Para llamar código MATLAB en C C ++, hay dos métodos disponibles. El primero de ellos es el motor de Matlab. El segundo es utilizar el compilador MATLAB MCC para crear C o C ++ bibliotecas compartidas de su código de MATLAB.

Además de Matlab y C C ++ pueden comunicarse a través de la escritura y la lectura de datos desde y hacia algún archivo (archivo por ejemplo, estera, archivo de texto).

Tener más de una forma para llevar a cabo cada uno de los objetivos aquí, ¿Me podría decir qué casos son los mejores para el uso de cuál de ellos? es decir, llamar a las funciones en C bibliotecas compartidas VS construcción de código C ++ en C binarios archivos MEX, motor de Matlab Matlab VS compilar código C en C ++ biblioteca compartida.

Gracias y saludos!

¿Fue útil?

Solución

Sólo tengo expreience con llamar a C o C ++ funciones de MATLAB. A mi me parece que la única diferencia entre llamar a funciones en una biblioteca compartida y llamar a las funciones de un archivo MEX es que con una biblioteca compartida, tiene que llamar a la función con 'calllib', que es una función de comando de tipo de línea y funciones MEX permiten llamar a las funciones como si fueran funciones integradas de lo que la interfaz es un poco más limpio.

Mi sugerencia es utilizar los archivos MEX si

  • Usted está utilizando C ++ (puede que tenga que escribir un envoltorio de utilizar un C ++ en una biblioteca compartida)
  • Está utilizando MATLAB como el pegamento para un gran número de rutinas optimizadas C o C ++. Usted querrá ser capaz de llamar limpiamente.

Uso compartido biblioteca si

  • Usted ya tiene una biblioteca de C existente que puede ser utilizado sin modificaciones.
  • Usted sólo necesita una pequeña cantidad de llamadas a funciones C.

En realidad, todo se reduce a la interfaz. Yo personalmente prefiero la ruta de archivos MEX, ya que proporciona la interfaz más limpia de MATLAB para su función C o C ++. Se le puede llamar como otra función con tipos de MATLAB estándar. Con una biblioteca compartida, es posible que tenga que hacer el formato de algunos datos antes de llamar a la función de la biblioteca

Otros consejos

Creo que los métodos que ha nombrado son correctas (que ha pasado un tiempo desde que los he usado)

El MATLAB C-compilador no es realmente especial; es posible utilizar diferentes compiladores. Ver la lista enlace de compiladores soportados. Esto no incluye gcc, pero se incluye MS Visual Studio. Se encontrará con problemas cuando se enlaza con las bibliotecas suministradas.

Básicamente: llamar Matlab de C es algo que haría si necesita una interfaz estanca; por ejemplo, si desea sincronizar 2 herramientas, o el S-función (Simulink) requiere información adicional. Pero entonces, un archivo de este tipo se llama además probablemente por Matlab / Simulink en el primer lugar.

c Llamando desde MATLAB es lo que quiere hacer si usted escribe sus propias funciones S o extensiones a Matlab.

La elección entre C y C ++ es el suyo; Si se parte de una hoja en blanco le sugiero que utilice C ++; no es necesario utilizar la funcionalidad completa, pero permite más libertad. También más bibliotecas tienden a estar disponible para C ++ en la actualidad.

C es el idioma de su elección, si es necesario migrar a entornos muy diferentes; es decir, para compilar C a DSPs por ejemplo. O si usted tiene código de la herencia en C para empezar. Mezcla C y C ++ es posible, pero una puede ser un engorroso bits; Estoy seguro de que encontrará temas Stackoverflow sólo sobre este tema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top