2012-03-25 7 views
5

Gibt es eine Möglichkeit, die Ergebnisse oder Daten (wie Matrizen) von Matlab zu Mathematica automatisch zu importieren? Oder gibt es eine Möglichkeit, ein Matlab-Programm zuerst auszuführen und dann ein Mathematica-Programm automatisch auszuführen?Gibt es eine Möglichkeit, die Ergebnisse oder Daten von Matlab zu Mathematica automatisch zu importieren?

Vielen Dank für hilfreiche Antworten!

+0

Haben Sie http://reference.wolfram.com/mathematica/ref/format/MAT.html gelesen? –

+2

Oder vielleicht können Sie erklären, was Sie mit _automatically_ –

+0

bedeuten, ich meine durch automatisch, dass man es nicht manuell importieren muss. Mit anderen Worten, gibt es eine Software oder ein Programm, die einem Matlab-Programm und einem Mathematica-Programm beitreten können? – js85

Antwort

5

Es gibt mindestens drei Ansätze dies zur Bekämpfung:

  1. 'Through' Java unter Verwendung von Mathematica JLink und eigenen Java-Fähigkeiten Matlab.

  2. Jedes Programm kann von der Befehlszeile aus ausgeführt werden, ein Skript ausführen und die Ausgabe nach Bedarf zurückgeben. Beide Programme können 'externe' Befehle ausführen und die Ergebnisse erfassen. Sehen Sie zum Beispiel in der Mathematica-Dokumentation unter der Überschrift Externe Programme nach. Matlab hat ähnliche Fähigkeiten.

  3. Wenn Sie unter Linux oder einem ähnlichen Betriebssystem arbeiten, können Sie die Ausgabe von einem Programm in das andere leiten.

Die Schwierigkeiten dieser Ansätze variieren.

2

Ich stolperte über dieses Problem und nach einigen Versuchen gelang es mir, einen einfachen Algorithmus zu erstellen, der für mich funktionierte.

Speichern Sie Ihre Matrix in Matlab:

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

m die Datei, -v7 ist die Version (jemand sagte, es wäre besser gearbeitet, ich weiß es nicht) und eine ist die Matrix. Ich habe es nicht mit mehr als einer Matrix gleichzeitig versucht.

Dann in Mathematica ich verwendet:

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

ich mein Verzeichnis in den Speicherort meiner m.mat-Datei festgelegt und es importiert. In meinem Fall war die Matrix 5000 * 5000, also musste ich in Teile mit je 5000 Elementen aufgeteilt werden. Wenn Sie eine N * K-Matrix haben, versuchen Sie, durch N und K zu teilen, um zu sehen, was Ihren Bedürfnissen entspricht.

+0

Ich denke, Sie können zu dieser Antwort auch die Drehung um 90 Grad nach links in den Daten hinzufügen. Etc 'Flatten [Cdata, Tabelle [{i}, {i, Tiefe [Cdata] - 1, 1, -1}]]]. Verwandte: http://mathematica.stackexchange.com/a/10589/9815 –