2009-10-16 23 views
14

Parece que hay varias formas de llamar a matlab en C C++ y llamar a C C++ en matlab. Mientras trato de enumerarlos aquí, por favor indíquelo si extraño algo.matlab en C C++ y C++ en matlab

Para llamar a C C++ en matlab, también hay dos métodos. El primero es llamar a funciones en C bibliotecas compartidas. El segundo es crear código C C++ en archivos MEX binarios, que se invocarán desde la línea de comandos de MATLAB. Para el primer método, ¿las bibliotecas compartidas C son solo generales, es decir, sin cambio en su código C para matlab y compiladas a partir de compilador de C general como gcc?

Para llamar al código de matlab en C C++, hay dos métodos disponibles. El primero es el motor Matlab. El segundo es usar MATLAB Compiler mcc para crear bibliotecas compartidas C o C++ desde su código MATLAB.

Además de matlab y C C++ pueden comunicarse mediante la escritura y lectura de datos hacia y desde algún archivo (por ejemplo, archivo mat, archivo de texto).

Teniendo más de una manera de lograr cada uno de los objetivos aquí, ¿podría decirme qué casos son mejores para usar cuál de ellos? es decir, llamadas a funciones en C bibliotecas compartidas VS construcción de código C C++ en archivos MEX binarios, motor VS de Matlab compilando código Matlab en biblioteca compartida C C++.

¡Gracias y saludos!

+0

No hay un lenguaje llamado C/C++. Interconectarse entre C y X va a ser mucho más fácil que interconectarse entre C++ y X. –

+11

Sabes lo que quiero decir, "C y/o C++" – Tim

+1

Las respuestas de C serán mucho más cortas que las respuestas de C++ (y en algunos casos , las respuestas de C++ serán "envoltorios de escritura en C"). ¿Cuál te preocupa más? –

Respuesta

8

Solo tengo experiencia al llamar a las funciones C o C++ de MATLAB. Me parece que la única diferencia entre llamar funciones en una biblioteca compartida y llamar funciones desde un archivo MEX es que con una biblioteca compartida, tiene que llamar a la función con 'calllib' que es una función de tipo línea de comando y las funciones MEX permiten usted puede llamar a funciones como si fueran funciones integradas, por lo que la interfaz es un poco más limpia.

Mi sugerencia es utilizar los archivos MEX si

  • 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 una gran cantidad de rutinas optimizadas de C o C++. Querrá poder llamarlos limpiamente.

uso de la biblioteca compartida si

  • Ya tiene una biblioteca de C existente que puede ser utilizado sin modificaciones.
  • Solo necesita un número pequeño de llamadas a funciones C.

Realmente, se trata de la interfaz. Personalmente prefiero la ruta del archivo MEX porque proporciona la interfaz más limpia desde MATLAB a su función C o C++. Puede llamarlo simplemente como una función más con los tipos estándar de MATLAB. Con una biblioteca compartida, es posible que tenga que hacer algo de formato de datos antes de llamar a la función de la biblioteca

3

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 usar diferentes compiladores. Consulte link lista de compiladores compatibles. Esto no incluye gcc, pero se incluye MS Visual Studio. Te encontrarás con problemas al vincular con las bibliotecas proporcionadas.

Básicamente: llamar a matlab desde C es algo que harías si necesitas una interfaz estrecha; por ejemplo, si desea sincronizar 2 herramientas, o su función S (simulink) requiere información adicional. Pero, en primer lugar, ese archivo es llamado por Matlab/simulink.

Llamar c desde matlab es lo que desea hacer si escribe sus propias funciones S o extensiones para matlab.

La elección entre C y C++ es suya; si comienzas desde una hoja en blanco, te sugiero que uses C++; no necesita usar la funcionalidad completa pero permite más libertad. También más bibliotecas tienden a estar disponibles para C++ hoy en día.

C es el idioma de elección si necesita migrar a entornos muy diferentes; es decir, para compilar C a DSP, por ejemplo. O si tiene código heredado en C para comenzar. Mezclar C y C++ es posible, pero a puede ser un poco engorroso; Estoy seguro de que encontrará temas sobre StackOverflow solo en este tema.

2

Vídeos de formación sobre el uso de C++ en Matlab y Matlab en C++ (lengua persa)

contenido:

1 - Intro

  • Introduction.wmv [02:00, 1,2 MB, 800x600]

2 - C++ en Matlab

  • concepts.wmv Básico [09:04, 5,9 MB, 800x600]
  • de configuración y un proyecto simple [08:25, 13 MB, 800x600]
  • muestras [02:17, 2,7 MB, 800x600]
  • Depuración [02:38, 3,4 MB, 800x600]

3 - Matlab en C++

  • Matlab C++ Shared DLL.wmv [05:42, 6,8 MB, 800x600]
  • Usando Matlab de vC++ [10:52, 14,2 MB, 800x600]

Watch or Download from Google

Download from 4Shared