2012-03-25 10 views
5

¿Hay alguna manera de importar los resultados o datos (como matrices) de Matlab a Mathematica automáticamente? ¿O hay alguna forma de ejecutar primero un programa de Matlab y luego ejecutar un programa de Mathematica automáticamente?¿Hay alguna manera de importar los resultados o datos de Matlab a Mathematica automáticamente?

¡Gracias por cualquier respuesta útil!

+0

¿Has leído http://reference.wolfram.com/mathematica/ref/format/MAT.html? –

+2

O tal vez usted puede explicar lo que quiere decir con'automatically_ –

+0

Quiero decir automáticamente que no es necesario importarlo manualmente. En otras palabras, ¿hay algún programa o programa que pueda unirse a un programa de Matlab y a un programa de Mathematica? – js85

Respuesta

5

Hay por lo menos tres enfoques para hacer frente a este:

  1. 'a través' de Java, utilizando JLINK de Mathematica y Java propias capacidades de MATLAB.

  2. Cualquiera de los programas se puede ejecutar desde la línea de comandos, ejecutar un script y devolver el resultado según sea necesario. Ambos programas pueden ejecutar comandos 'externos' y capturar los resultados. Mire, por ejemplo, en la documentación de Mathematica bajo el encabezado Programas externos. Matlab tiene capacidades similares.

  3. Si está ejecutando Linux, o un sistema operativo similar, puede canalizar la salida de un programa al otro.

Las dificultades de estos enfoques varían.

2

Me encontré con este problema y después de algunos intentos me las arreglé para crear un algoritmo simple que funcionó para mí.

Guarde su matriz en Matlab usando:

save('m','-v7','a') 

m es el archivo, -v7 es la versión (alguien dijo que sería funcionado mejor, no sé) y A es la matriz. No probé con más de una matriz a la vez.

Luego, en Mathematica que utiliza:

SetDirectory["Desktop"] 
a = Import["m.mat"] ; 
a=Partition[Flatten[a], 5000] 

puse mi directorio para la ubicación de mi archivo m.mat y importé. En mi caso, la matriz era 5000 * 5000, así que tuve que dividirla en partes con 5000 elementos cada una. Si tiene una matriz N * K, intente dividir entre N y K para ver qué se adapta a sus necesidades.

+0

Creo que puede agregar a esta respuesta también la rotación 90 grados a la izquierda en los datos. Etc 'Flatten [Cdata, Tabla [{i}, {i, Profundidad [Cdata] - 1, 1, -1}]]'. Relacionado: http://mathematica.stackexchange.com/a/10589/9815 –

Cuestiones relacionadas