2012-03-25 20 views
5

Có cách nào để nhập kết quả hoặc dữ liệu (chẳng hạn như ma trận) từ Matlab vào Mathematica tự động không? Hoặc là có cách nào để chạy một chương trình Matlab đầu tiên và sau đó chạy một chương trình Mathematica tự động?Có cách nào để nhập kết quả hoặc dữ liệu từ Matlab vào Mathematica tự động không?

Cảm ơn mọi câu trả lời hữu ích!

+0

Bạn đã đọc http://reference.wolfram.com/mathematica/ref/format/MAT.html chưa? –

+2

Hoặc có lẽ bạn có thể giải thích ý bạn là gì bởi _automatically_ –

+0

Ý tôi là tự động là người không phải nhập thủ công. Nói cách khác, có bất kỳ phần mềm hoặc chương trình nào có thể tham gia chương trình Matlab và chương trình Mathematica không? – js85

Trả lời

5

Có ít nhất ba cách tiếp cận để giải quyết này:

  1. 'Qua' Java, sử dụng JLink Mathematica và khả năng Java riêng của Matlab.

  2. Hoặc có thể chạy chương trình từ dòng lệnh, thực thi tập lệnh và trả về kết quả theo yêu cầu. Cả hai chương trình có thể chạy các lệnh 'bên ngoài' và nắm bắt kết quả. Xem ví dụ, trong tài liệu Mathematica dưới tiêu đề Chương trình bên ngoài. Matlab có khả năng tương tự.

  3. Nếu bạn đang chạy trên Linux hoặc hệ điều hành tương tự, bạn có thể dẫn đầu ra từ chương trình này sang chương trình khác.

Những khó khăn của các phương pháp này khác nhau.

2

Tôi tình cờ gặp vấn đề này và sau một số lần thử tôi đã quản lý để tạo một thuật toán đơn giản phù hợp với tôi.

Lưu ma trận của bạn trong Matlab sử dụng:

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

m là tập tin, -v7 là phiên bản (ai đó nói nó sẽ làm việc tốt hơn, tôi không biết) và a là ma trận. Tôi đã không thử nhiều ma trận cùng một lúc.

Sau đó, trong Mathematica tôi đã sử dụng:

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

tôi đặt thư mục của tôi vào vị trí của tập tin m.mat tôi và nhập khẩu nó. Trong trường hợp của tôi ma trận là 5000 * 5000 vì vậy tôi phải chia thành từng phần với 5000 phần tử. Nếu bạn có ma trận N * K cố gắng chia cho N và K để xem điều gì phù hợp với nhu cầu của bạn.

+0

Tôi nghĩ bạn có thể thêm vào câu trả lời này cũng xoay 90 độ sang trái trong dữ liệu. Etc 'Flatten [Cdata, Bảng [{i}, {i, Độ sâu [Cdata] - 1, 1, -1}]]'. Liên quan: http://mathematica.stackexchange.com/a/10589/9815 –

Các vấn đề liên quan