Một công cụ để chuyển đổi mã MATLAB sang Python [đã đóng]


150

Tôi có một loạt mã MATLAB từ luận án MS mà bây giờ tôi muốn chuyển đổi sang Python (sử dụng numpy / scipy và matplotlib) và phân phối dưới dạng nguồn mở. Tôi biết sự tương đồng giữa các thư viện khoa học MATLAB và Python và chuyển đổi chúng theo cách thủ công sẽ không quá hai tuần (với điều kiện tôi làm việc với nó mỗi ngày một thời gian). Tôi đã tự hỏi nếu đã có bất kỳ công cụ có sẵn có thể thực hiện chuyển đổi.


7
một khả năng khác là phát hành mã nguồn của bạn như hiện tại và kiểm tra nó trong Octave (www.gnu.org/software/octave) có khả năng cạnh tranh matlab 99%.
Oz123

2
@josliber: Chúng ta có thể chuyển câu hỏi này sang softwarerecs.stackexchange.com để có thể mở lại không?
Anderson Green

@andersongreen câu hỏi quá cũ để di chuyển
josliber

1
Tôi nghĩ bây giờ cách tốt nhất để làm điều này là sử dụng công cụ tích hợp matlab mcc
R3m

Câu trả lời:


157

Có một số công cụ để chuyển đổi Matlab sang mã Python.

Hoạt động duy nhất được thấy gần đây (cam kết cuối cùng từ tháng 6 năm 2018) là trình biên dịch S mall M atlab t o P ython (cũng được phát triển tại đây: SMOP @ chiselapp ).

Các tùy chọn khác bao gồm:

  • LiberMate : dịch từ Matlab sang Python và SciPy (Yêu cầu Python 2, bản cập nhật mới nhất 4 năm trước).
  • OMPC : Matlab to Python (hơi lỗi thời).

Ngoài ra, đối với những người quan tâm đến giao diện giữa hai ngôn ngữ và không chuyển đổi:

  • pymatlab: giao tiếp từ Python bằng cách gửi dữ liệu đến không gian làm việc MATLAB, hoạt động trên chúng bằng các tập lệnh và lấy lại dữ liệu kết quả.
  • Hố sâu Python-Matlab : cả hai hướng tương tác được hỗ trợ.
  • Cầu Python-Matlab : sử dụng Matlab từ bên trong Python, cung cấp matlab_magic cho iPython, để thực thi mã matlab bình thường từ bên trong ipython.
  • PyMat : Kiểm soát phiên Matlab từ Python.
  • pymat2: tiếp tục của PyMat dường như bị bỏ rơi.
  • mlabwrap, mlabwrap-purepy : làm cho Matlab trông giống như thư viện Python (dựa trên PyMat).
  • oct2py: chạy các lệnh GNU Octave từ bên trong Python.
  • pymex: Nhúng Trình thông dịch Python trong Matlab, cũng trên Trao đổi tệp .
  • matpy: Truy cập MATLAB theo nhiều cách khác nhau: tạo biến, truy cập tệp .mat, giao diện trực tiếp với công cụ MATLAB (yêu cầu MATLAB được cài đặt).
  • MatPy : Gói Python cho đại số tuyến tính số và vẽ đồ thị với giao diện giống MatLab.

Btw có thể hữu ích để xem ở đây cho các mẹo di chuyển khác:

Ở một lưu ý khác, mặc dù tôi hoàn toàn không phải là một fortranngười hâm mộ, đối với những người có thể thấy nó hữu ích thì có:


2
Có ai có một nhận xét về cái nào trong số này hoạt động tốt nhất hoặc trường hợp nào thất bại?
Chogg

8
Tôi cũng chưa thử nghiệm chúng, nhưng có vẻ như smop có sự khác biệt duy nhất là được duy trì tích cực, bởi nhà phát triển ban đầu, trên github, với một bộ thử nghiệm.
Andrew Wagner

cái nào là nhanh nhất để gọi các hàm MATLAB trong số các phương thức thiết lập giao diện?
Viktor Tóth

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.