Chuyển đổi matlab sang python trực tuyến

OMPC cho phép chạy m-file của MATLAB® bằng trình thông dịch Python. OMPC đọc các tệp m và dịch chúng thành mã tương thích với Python


OMPC nhằm mục đích cho phép sử dụng lại cơ sở mã mở và miễn phí khổng lồ của MATLAB® trên nền tảng Python miễn phí và phát triển nhanh hơn. Chạy Python và MATLAB® trong một trình thông dịch duy nhất sẽ tránh được các sự cố khi chạy hai ứng dụng riêng biệt. Python thêm các thư viện lập trình mục đích chung vào cú pháp thuận tiện của ngôn ngữ máy tính kỹ thuật
phụ thuộc. Python, OMPC sử dụng PLY và Byteplay, nhưng chúng được phân phối cùng với mã nguồn
Phụ thuộc Python. ctypes [dành cho phiên bản Python < 2. 5], cho OMPClib. numpy, scipy, matplotlib [pylab] và có thể những thứ khác
Hệ điều hành được hỗ trợ. tất cả các nền tảng hỗ trợ Python, ctypes, numpy, scipy, matplotlib[pylab]
cấp phép. OMPC và tất cả các ví dụ là một phần của trang web OMPC được cấp phép theo giấy phép kiểu BSD

Làm thế nào nó hoạt động

OMPC cho phép chạy m-file của MATLAB® bằng trình thông dịch Python. OMPC đọc các tệp m và dịch chúng thành mã tương thích với Python. Giống như trong ví dụ sau

hàm [s,varargout] = mysize[x]
% kích thước với varargout
nout = max[nargout,1]-1;
s = kích thước [x];
với k=1. nout, vararout[k] = {s[k]};

từ nhập ompc *

@mfunction["s", "varargout"]
xác định kích thước của tôi [x]
"""kích thước với varargout"""
nout = max[nargout,1] - 1
s = kích thước[x]
cho k trong m_[1. không]
đầu ra[k]. giá trị = mcell[s[k]]


OMPC không phải là trình thông dịch, nó cho phép Python thực hiện công việc. Điều này có nghĩa là nếu Python nhanh hơn thì OMPC cũng sẽ nhanh hơn. OMPC dịch các tệp m bảo tồn cấu trúc của các chương trình gốc càng nhiều càng tốt. Mặc dù OMPC đi kèm với một thư viện mô phỏng các tính năng của MATLAB's® mảng số không có gì có thể ngăn bạn chạy mã đã dịch theo cách bạn muốn. Điều này có nghĩa là bạn có thể chạy mã do OMPC tạo ra trên IronPython, Jython, PyPy hoặc bất kỳ thứ gì khác nếu bạn viết lớp số của riêng mình


Tất cả điều kỳ diệu được tạo ra bởi những người trang trí trăn và nội quan. Xem phần ví dụ để biết cách có thể mô phỏng các biến ẩn như nargin/nargout và các khía cạnh động khác của công cụ MATLAB® không có sẵn trong Python

Nhà phát triển, người thử nghiệm và yêu cầu tính năng

Nếu bạn muốn hiểu thêm về cách thức hoạt động của OMPC hoặc bạn muốn đóng góp theo bất kỳ cách nào cho sự phát triển, hãy xem các trang tài liệu dành cho nhà phát triển
Đóng góp được hoan nghênh dưới mọi hình thức. Bất kỳ ai cũng có thể đóng góp bằng cách thử nghiệm. Sự phát triển được thúc đẩy bởi thử nghiệm và nhu cầu. Đối với thư viện chức năng hoặc hộp công cụ nếu bạn thích, dự án OMPC không sử dụng bất kỳ công cụ theo dõi lỗi tinh vi và có thể phức tạp nào. Lý do không sử dụng theo dõi lỗi phổ biến là sự phát triển dựa trên sự đóng góp của những người không phải là lập trình viên

MATLAB® là thương hiệu đã đăng ký của The MathWorks, Inc
"Python" và các logo Python là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Python Software Foundation

Tập lệnh python để chuyển đổi tệp matlab hoặc dòng mã matlab sang python. Dự án này đang trong giai đoạn alpha. Việc triển khai này phụ thuộc rất nhiều vào dự án SMOP của Victor Leikehman. Việc triển khai hiện tại xoay quanh SMOP, với những điểm khác biệt sau

  • Nó cố gắng tạo mã không dựa trên libsmop, mà chỉ dựa trên các mô-đun python thông thường, chẳng hạn như numpy
  • Nó sử dụng các phím tắt điển hình như np thay vì numpy
  • Nó cố gắng lập chỉ mục lại các mảng và vòng lặp, bắt đầu từ 0 thay vì 1
  • Nó không sử dụng các lớp bên ngoài matlabarraycellarray từ libsmop
  • Hỗ trợ cơ bản cho các lớp Matlab được thêm vào. Các thuộc tính được khai báo trong phần thân của lớp được khởi tạo trong hàm tạo
  • Do tất cả những điều trên, mã kết quả là "kém an toàn hơn" nhưng có thể hơi gần với những gì người dùng sẽ viết

Việc triển khai này được thực hiện đơn giản, vì về cơ bản, nó sử dụng một tập lệnh phụ trợ khác với tập lệnh được sử dụng bởi SMOP, ở đây được gọi là

python path/to/matlab2python.py file.m -o file.py
0. Một số thay thế chức năng đã được thêm trực tiếp vào đó. Hỗ trợ bổ sung cho các lớp, nhập mô-đun và thay thế tinh chỉnh khác [hoặc hack. ] được thực hiện trong tệp
python path/to/matlab2python.py file.m -o file.py
1

Cài đặt

Mã được viết bằng python, bạn có thể truy cập nó như sau

git clone //github.com/ebranlard/matlab2python
cd matlab2python
# install dependencies
python -m pip install --user -r requirements.txt 
# make the packages available from any directory
python -m pip install -e .  
#Optional: run tests
pytest
#Optional: try it directly
python matlab2python.py tests/files/fSpectrum.m -o fSpectrum.py

Cách sử dụng

kịch bản chính

Tập lệnh chính ở thư mục gốc của kho lưu trữ có thể thực thi được và có một vài cờ dòng lệnh [một số được lấy trực tiếp từ SMOP]. Để chuyển đổi tệp

python path/to/matlab2python.py file.m -o file.py
2 thành
python path/to/matlab2python.py file.m -o file.py
3, chỉ cần gõ

python path/to/matlab2python.py file.m -o file.py

trong đó

python path/to/matlab2python.py file.m -o file.py
4 là đường dẫn đến tập lệnh
python path/to/matlab2python.py file.m -o file.py
5

từ con trăn

Gói python cũng có thể được sử dụng trực tiếp để thực hiện chuyển đổi tệp hoặc dòng mã

________số 8_______

Tôi có nên sử dụng cái này không

Nếu bạn cần một tập lệnh thực hiện các chuyển đổi rõ ràng từ matlab sang python, thì

python path/to/matlab2python.py file.m -o file.py
6 hy vọng sẽ phù hợp với bạn. Những chuyển đổi này là ví dụ

  • cú pháp [
    python path/to/matlab2python.py file.m -o file.py
    7,
    python path/to/matlab2python.py file.m -o file.py
    8,
    python path/to/matlab2python.py file.m -o file.py
    9,
    import matlabparser as mpars
    # --- Convert a matlab file 
    pylines = mpars.matlab2python['path/to/file.m', output='file.py']
    
    # --- Convert matlab lines [string or list of strings]
    mlines="""# a comment
    x = linspace[0,1,100];
    y = cos[x] + x**2;
    """
    pylines = mpars.matlablines2python[mlines, output='stdout']
    0, không còn
    import matlabparser as mpars
    # --- Convert a matlab file 
    pylines = mpars.matlab2python['path/to/file.m', output='file.py']
    
    # --- Convert matlab lines [string or list of strings]
    mlines="""# a comment
    x = linspace[0,1,100];
    y = cos[x] + x**2;
    """
    pylines = mpars.matlablines2python[mlines, output='stdout']
    1]
  • vết lõm
  • ngoặc đơn sang ngoặc đơn
  • thay thế các hàm dựng sẵn đơn giản [_______8_______2,
    import matlabparser as mpars
    # --- Convert a matlab file 
    pylines = mpars.matlab2python['path/to/file.m', output='file.py']
    
    # --- Convert matlab lines [string or list of strings]
    mlines="""# a comment
    x = linspace[0,1,100];
    y = cos[x] + x**2;
    """
    pylines = mpars.matlablines2python[mlines, output='stdout']
    3,
    import matlabparser as mpars
    # --- Convert a matlab file 
    pylines = mpars.matlab2python['path/to/file.m', output='file.py']
    
    # --- Convert matlab lines [string or list of strings]
    mlines="""# a comment
    x = linspace[0,1,100];
    y = cos[x] + x**2;
    """
    pylines = mpars.matlablines2python[mlines, output='stdout']
    4,
    import matlabparser as mpars
    # --- Convert a matlab file 
    pylines = mpars.matlab2python['path/to/file.m', output='file.py']
    
    # --- Convert matlab lines [string or list of strings]
    mlines="""# a comment
    x = linspace[0,1,100];
    y = cos[x] + x**2;
    """
    pylines = mpars.matlablines2python[mlines, output='stdout']
    5]
  • thay thế numpy đơn giản như
    import matlabparser as mpars
    # --- Convert a matlab file 
    pylines = mpars.matlab2python['path/to/file.m', output='file.py']
    
    # --- Convert matlab lines [string or list of strings]
    mlines="""# a comment
    x = linspace[0,1,100];
    y = cos[x] + x**2;
    """
    pylines = mpars.matlablines2python[mlines, output='stdout']
    6 thành
    import matlabparser as mpars
    # --- Convert a matlab file 
    pylines = mpars.matlab2python['path/to/file.m', output='file.py']
    
    # --- Convert matlab lines [string or list of strings]
    mlines="""# a comment
    x = linspace[0,1,100];
    y = cos[x] + x**2;
    """
    pylines = mpars.matlablines2python[mlines, output='stdout']
    7, hoặc
    import matlabparser as mpars
    # --- Convert a matlab file 
    pylines = mpars.matlab2python['path/to/file.m', output='file.py']
    
    # --- Convert matlab lines [string or list of strings]
    mlines="""# a comment
    x = linspace[0,1,100];
    y = cos[x] + x**2;
    """
    pylines = mpars.matlablines2python[mlines, output='stdout']
    8, thành
    import matlabparser as mpars
    # --- Convert a matlab file 
    pylines = mpars.matlab2python['path/to/file.m', output='file.py']
    
    # --- Convert matlab lines [string or list of strings]
    mlines="""# a comment
    x = linspace[0,1,100];
    y = cos[x] + x**2;
    """
    pylines = mpars.matlablines2python[mlines, output='stdout']
    9
  • các chức năng linh tinh khác như libsmop0, libsmop1, libsmop2 được thay thế bằng python của họ,
  • vân vân

Như đã đề cập ở trên, SMOP thực hiện rất tốt việc tạo mã an toàn. Tuy nhiên, cả libsmop3 và

python path/to/matlab2python.py file.m -o file.py
6 đều không tạo ra mã sẵn sàng sản xuất [có thể trong một số trường hợp]. Hầu hết thời gian, người dùng sẽ phải xem qua mã và thực hiện các điều chỉnh và viết lại một số. Trên thực tế,
python path/to/matlab2python.py file.m -o file.py
6 có thể sẽ kém hơn một chút so với SMOP trong việc tạo mã hoạt động vượt trội. Nhưng cuối cùng, mã được tạo bởi
python path/to/matlab2python.py file.m -o file.py
6 sẽ yêu cầu ít cấu trúc lại hơn và giúp người dùng chuyển đổi. Như tác giả của SMOP đã đề cập, rất khó để không che giấu hương vị matlab khỏi mã được tạo và cũng rất khó để chuyển đổi hoàn toàn mã mà không giới thiệu các lớp được bao bọc sao cho matlabarray. Việc triển khai
python path/to/matlab2python.py file.m -o file.py
6 cố gắng thực hiện điều đó, với cái giá là kém an toàn hơn

Tôi đã viết tập lệnh bao bọc này cho nhu cầu của riêng mình. Tôi đã sẵn sàng chuyển đổi một loạt các tập lệnh matlab theo cách thủ công, nhưng tôi nghĩ rằng tôi có thể có một tập lệnh để tự động hóa một số chuyển đổi và định dạng đơn giản. Tôi đã bắt đầu triển khai nhanh chóng và bẩn thỉu trước khi phát hiện ra libsmop3. Cuối cùng, tôi đã hợp nhất cách triển khai nhanh và bẩn của mình với khung phân tích cú pháp mạnh hơn được sử dụng bởi SMOP. Hy vọng điều này có thể hữu ích cho người khác. Nếu vậy, hãy đóng góp

Đóng góp

Mọi đóng góp cho dự án này đều được hoan nghênh. Nếu bạn thấy dự án này hữu ích, bạn cũng có thể mua cho tôi một ly cà phê [tặng một số tiền nhỏ] bằng liên kết bên dưới

Bạn có thể chạy tệp MATLAB bằng Python không?

Có hai cách để gọi mã MATLAB từ Python. Đầu tiên là sử dụng API Công cụ MATLAB cho Python, yêu cầu cài đặt MATLAB . Thứ hai là sử dụng SDK trình biên dịch MATLAB để biên dịch gói Python không yêu cầu người dùng phải cài đặt MATLAB.

Trình chuyển đổi SMOP MATLAB sang Python là gì?

SMOP là Trình biên dịch Matlab và Octave sang Python nhỏ . SMOP dịch matlab sang python. Mặc dù có những điểm tương đồng rõ ràng giữa matlab và numeric python, nhưng vẫn có đủ sự khác biệt để khiến việc dịch thủ công không khả thi trong cuộc sống thực. SMOP tạo ra con trăn có thể đọc được bằng con người, dường như cũng nhanh hơn quãng tám.

Làm cách nào để chạy mã MATLAB bằng Python mà không cần MATLAB?

Tóm lại. bạn không thể . Bạn cần có bản cài đặt MATLAB được cấp phép, đang hoạt động, bản cài đặt này sẽ được gọi ở chế độ nền. Nếu không có bản cài đặt MATLAB hoạt động, được cấp phép, bạn không thể chạy mã MATLAB.

Làm cách nào để nhập MATLAB bằng Python?

Khởi động Công cụ MATLAB cho Python .
Khởi động Python® tại dấu nhắc của hệ điều hành
nhập matlab. gói công cụ vào phiên Python của bạn
Bắt đầu một quy trình MATLAB® mới bằng cách gọi start_matlab. Hàm start_matlab trả về một đối tượng Python eng cho phép bạn truyền dữ liệu và gọi các hàm do MATLAB thực thi

Chủ Đề