2012-03-25 5 views
5

Esiste un modo per importare automaticamente i dati oi risultati (come le matrici) da Matlab a Matematica ? O esiste un modo per eseguire prima un programma Matlab e quindi eseguire un programma Mathematica automaticamente?C'è un modo per importare automaticamente i risultati o i dati da Matlab a Mathematica?

Grazie per eventuali risposte utili!

+0

Hai letto http://reference.wolfram.com/mathematica/ref/format/MAT.html? –

+2

O forse potresti spiegare cosa intendi per _automaticamente_ –

+0

Intendo automaticamente che non devi importarlo manualmente. In altre parole, esiste un software o un programma che può unire un programma Matlab e un programma Mathematica? – js85

risposta

5

Ci sono almeno tre approcci per affrontare questo:

  1. 'Attraverso' Java, usando JLink di Mathematica e proprie capacità di Java Matlab.

  2. Entrambi i programmi possono essere eseguiti dalla riga di comando, eseguire uno script e restituire l'output come richiesto. Entrambi i programmi possono eseguire comandi "esterni" e acquisire i risultati. Guarda, ad esempio, nella documentazione di Mathematica sotto il titolo Programmi esterni. Matlab ha capacità simili.

  3. Se si utilizza Linux o un sistema operativo simile, è possibile reindirizzare l'output da un programma all'altro.

Le difficoltà di questi approcci variano.

2

Mi sono imbattuto in questo problema e dopo alcuni tentativi sono riuscito a creare un semplice algoritmo che ha funzionato per me.

Salvare il matrice in Matlab utilizzando:

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

m è il file, -v7 è la versione (qualcuno ha detto che avrebbe funzionato meglio, non lo so) e A è la matrice. Non ho provato con più di una matrice alla volta.

Poi in matematica ho usato:

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

ho impostato la mia directory alla posizione del mio file m.mat e importato. Nel mio caso la matrice era 5000 * 5000 quindi ho dovuto dividere in parti con 5000 elementi ciascuna. Se si dispone di una matrice N * K, provare a dividere per N e K per vedere ciò che si adatta alle proprie esigenze.

+0

Penso che si possa aggiungere a questa risposta anche la rotazione di 90 gradi a sinistra nei dati. Etc 'Flatten [Cdata, Table [{i}, {i, Depth [Cdata] - 1, 1, -1}]]. Correlato: http://mathematica.stackexchange.com/a/10589/9815 –