Hướng dẫn how do i convert matlab to smop to python code? - làm cách nào để chuyển đổi mã matlab thành smop sang mã python?

Tôi đã cài đặt SMOP qua PIP và nó dường như hoạt động tốt. Tôi có các tệp

smop VI.m
6 và
smop VI.m
7 trong thư mục Python của tôi
smop VI.m
8.

Giả sử tôi có một tập tin MATLAB có tên

smop VI.m
9 nằm trong
> pip install .
0. Làm cách nào để sử dụng SMOP để dịch tệp đó?

Tài liệu SMOP chỉ bao gồm một ví dụ về việc mở một tệp có trong thư mục

> pip install .
1 với
> pip install .
2 và tôi không có bất cứ thứ gì như vậy. Ngoài ra, trang GitHub không cho biết nó chỉ hoạt động với 2.7 hay 3. hoặc bất cứ điều gì.

Tôi đã hy vọng rằng gói này sẽ tăng tốc độ chuyển đổi MATLAB của tôi -> Python 3.6, nhưng nếu có những người dịch tốt hơn ngoài kia, vui lòng cho tôi biết điều đó cũng/thay vào đó.

Hỏi ngày 19 tháng 4 năm 2018 lúc 10:14Apr 19, 2018 at 10:14

Aaron Bramsonaaron BramsonAaron Bramson

1.1373 huy hiệu vàng19 Huy hiệu bạc31 Huy hiệu đồng3 gold badges19 silver badges31 bronze badges

2

Tôi chỉ thử sử dụng để chuyển đổi tệp MATLAB với SMOP và nó đã hoạt động. Tôi đã cài đặt phần mềm bằng PIP trong môi trường nhắc nhở Anaconda.

pip install smop

Sau khi cài đặt tôi đã có phiên bản 0,41.

Tôi đã sao chép tệp mà tôi muốn chuyển đổi trong thư mục nơi tôi đã chạy mã PIP trong môi trường nhắc nhở Anaconda.

Sau đó, tôi đã sử dụng mã SMOP và tên tệp .M và có một tệp .Py trong cùng một thư mục.

smop VI.m

CRIS LUENGO

51.7K9 Huy hiệu vàng59 Huy hiệu bạc114 Huy hiệu đồng9 gold badges59 silver badges114 bronze badges

Đã trả lời ngày 10 tháng 9 năm 2018 lúc 23:17Sep 10, 2018 at 23:17

6

Sử dụng SMOP không khác với các công cụ dòng lệnh khác. Đầu tiên, có được các nguồn. Tải xuống, nhân bản, tar, wget hoặc bất cứ điều gì làm việc cho bạn. Hãy gọi thư mục chứa setup.py thư mục gốc. Thay đổi thư mục thành cái đó. Bây giờ cài đặt SMOP

> pip install .

Hãy xem nếu nó hoạt động:

> smop -V

0.40

Yup, nó làm.

Hãy xem các tài liệu:

> smop | more

Cuối cùng, bản dịch chính nó. Nếu bạn có một loạt các tệp matlab m, có tên foo.m, bar.m, bzz.m và bạn muốn dịch các tệp này sang python bạn gõ

> smop foo.m bar.m bzz.m

CRIS LUENGO

51.7K9 Huy hiệu vàng59 Huy hiệu bạc114 Huy hiệu đồng9 gold badges59 silver badges114 bronze badges

Đã trả lời ngày 10 tháng 9 năm 2018 lúc 23:17May 26, 2018 at 15:23

1

> pip install .
3 là Matlab nhỏ và Octave sang trình biên dịch Python .________ 23 Dịch Matlab sang Python. Mặc dù có những điểm tương đồng rõ ràng giữa Matlab và Python số, có đủ sự khác biệt để làm cho bản dịch thủ công trở nên không khả thi trong cuộc sống thực.
> pip install .
3 tạo ra Python có thể đọc được của con người, cũng có vẻ nhanh hơn quãng tám. Chỉ nhanh như thế nào? Kết quả thời gian cho "đồ nội thất di chuyển" được hiển thị trong Bảng 1. Dường như đối với chương trình này, việc dịch sang Python dẫn đến tăng tốc khoảng hai lần và tăng tốc hai lần tăng tốc độ bằng cách biên dịch thư viện thời gian chạy
> pip install .
7 cho C, sử dụng Cython . Điều này đo lường hiệu suất vô hướng này và cách giải thích của tôi là các tính toán vô hướng ít được nhóm Octave quan tâm.
Octave-3.8.1190 ms
Smop+Python-2.780 ms
Smop+Python-2.7+Cython-0.20.140 ms
Bảng 1.
> pip install .
3 Hiệu suất
& nbsp;

Tin tức

Ngày 15 tháng 10 năm 2014version 0.26.3 có sẵn để thử nghiệm beta. Phiên bản tiếp theo 0.27 được lên kế hoạch biên dịch thư viện Octave
> pip install .
9, chứa hơn 120 KLOC trong gần 1.000 tệp MATLAB. Có 13 lỗi biên dịch với SMOP 0,26.3.

Cài đặt

  • Cài đặt mạng là phương pháp tốt nhất nếu bạn chỉ muốn nó chạy ví dụ:

    $ easy_install smop --user
    
  • Cài đặt từ các nguồn nếu bạn đứng sau tường lửa:

    $ tar zxvf smop.tar.gz
    $ cd smop
    $ python setup.py install --user
    
  • Kho lưu trữ Fork GitHub nếu bạn cần các bản sửa lỗi mới nhất.

  • Cuối cùng, có thể sử dụng SMOP mà không cần cài đặt, nhưng chỉ khi bạn đã cài đặt các phụ thuộc - Numpy và NetworkX:

    $ tar zxvf smop.tar.gz
    $ cd smop/smop
    $ python main.py solver.m
    $ python solver.py
    

Ví dụ làm việc

Chúng tôi sẽ dịch

> smop -V

0.40
0 để trình bày một mẫu các tính năng SMOP. Chương trình đã được mượn từ cuộc thi lập trình MATLAB năm 2004 [nội thất di chuyển]. Để bên trái là
> smop -V

0.40
0. Bên phải là
> smop -V

0.40
2 --- bản dịch của nó sang Python. Mặc dù chỉ dài 30 dòng, ví dụ này cho thấy nhiều sự phức tạp của việc chuyển đổi mã MATLAB thành Python.

01   function mv = solver[ai,af,w]  01 def solver_[ai,af,w,nargout=1]:
02   nBlocks = max[ai[:]];          02     nBlocks=max_[ai[:]]
03   [m,n] = size[ai];              03     m,n=size_[ai,nargout=2]

02 MATLAB sử dụng khung tròn cả để lập chỉ mục mảng và cho các cuộc gọi chức năng. Để tìm ra cái nào, SMOP tính toán thông tin sử dụng địa phương, và sau đó áp dụng quy tắc sau: Tên không xác định là các hàm, trong khi được xác định là mảng.
03 Hàm MATLAB
> smop -V

0.40
3 Trả về số lượng giá trị trả về, tương ứng với việc trả về một tuple trong Python. Vì các hàm Python không biết về số lượng giá trị trả về dự kiến, nên số lượng của chúng phải được truyền rõ ràng trong
> smop -V

0.40
4.

smop VI.m
0

04 Lập chỉ mục mảng Matlab bắt đầu với một; Lập chỉ mục Python bắt đầu bằng không. Lớp mới
> smop -V

0.40
5 xuất phát từ
> smop -V

0.40
6, nhưng phơi bày hành vi mảng MATLAB. Ví dụ, các trường hợp
> smop -V

0.40
5 luôn có ít nhất hai chiều - hình dạng của
> smop -V

0.40
8 và
> smop -V

0.40
9 là [1 4].
06 Bài tập mảng Matlab ngụ ý sao chép; Bài tập Python ngụ ý chia sẻ dữ liệu. Chúng tôi sử dụng bản sao rõ ràng ở đây.
07 Đối tượng
> smop -V

0.40
5 trống được tạo, và sau đó được mở rộng ở dòng 28. Mở rộng các mảng bằng cách gán ngoài giới hạn được không dùng nữa trong MATLAB, nhưng được sử dụng rộng rãi không bao giờ ít hơn. Python
> smop -V

0.40
6 không thể được thay đổi kích thước ngoại trừ trong một số trường hợp đặc biệt. Các trường hợp của
> smop -V

0.40
5 có thể được thay đổi kích thước ngoại trừ nơi nó quá đắt.

smop VI.m
1

09 Các hàm MATLAB của các đối số bằng không, chẳng hạn như
> smop | more
3, có thể được sử dụng mà không cần dấu ngoặc đơn. Trong Python, dấu ngoặc đơn được yêu cầu. Để phát hiện các trường hợp như vậy, các biến được sử dụng nhưng không xác định được coi là các hàm.
10 Số lượng giá trị trả về dự kiến ​​từ hàm MATLAB
> smop | more
4 được truyền rõ ràng trong
> smop -V

0.40
4.
12 Các biến I và J chứa các phiên bản của lớp mới
> smop -V

0.40
5, trong số các tính năng khác sử dụng lập chỉ mục mảng dựa trên một.

smop VI.m
2

Tình trạng thực hiện

Nhận xét ngẫu nhiên

Với ít hơn năm nghìn dòng mã Python ____23 không giả vờ cạnh tranh với các sản phẩm được đánh bóng như Matlab hoặc Octave. Tuy nhiên, nó không phải là một món đồ chơi. Có một nỗ lực để theo ngữ nghĩa MATLAB ban đầu càng gần càng tốt. Định nghĩa ngôn ngữ MATLAB [không bao giờ xuất bản AFAIK] có đầy đủ các góc tối, và
> pip install .
3 cố gắng theo dõi MATLAB chính xác nhất có thể. Cũng có một mức giá. Trong cả hai ngôn ngữ và môi trường phát triển cũ phải được giữ xung quanh. Có nên chương trình được tạo là Pythonic hay Matlabic không?

Ví dụ, nên lập chỉ mục mảng bắt đầu bằng 0 [pythonic] hoặc với một [matlabic]?

Bây giờ tôi tin rằng một số giọng Matlabic là không thể tránh khỏi trong các nguồn Python được tạo ra. Hãy tưởng tượng chương trình Matlab đang sử dụng các biểu thức thông thường, phong cách MATLAB. Chúng tôi sẽ không dịch chúng sang phong cách Python và mã đó sẽ tồn tại mãi mãi như một lời nhắc nhở về nguồn gốc MATLAB của chương trình.

Một vi dụ khac. Mã MATLAB mở một tập tin; Fopen trả về -1 về lỗi. Mã Pythonic sẽ tăng ngoại lệ, nhưng chúng tôi sẽ không làm điều đó. Thay vào đó, chúng tôi sẽ sống với giọng nói, và Smop đưa điều này đến mức cực đoan --- Chương trình MATLAB vẫn không thay đổi.

Hóa ra việc tạo Matlabic` cho phép di chuyển nhiều độ phức tạp của dự án ra khỏi trình biên dịch [đã đủ phức tạp] và vào thư viện thời gian chạy, trong đó hầu như không có tương tác giữa các bộ phận thư viện.

Cái nào nhanh hơn --- python hay quãng tám? Tôi không biết. Các phép đo hiệu suất đáng tin cậy nổi tiếng là khó khăn, và bây giờ là ưu tiên thấp đối với tôi. Thay vào đó, tôi đã viết một trình điều khiển đơn giản
> smop | more
9 và
> smop foo.m bar.m bzz.m
0 và viết lại Rand để các phiên bản Python và Octave chạy cùng một mã. Sau đó, tôi đã chạy ví dụ trên trên máy tính xách tay của tôi. Kết quả nhanh gấp đôi cho phiên bản Python. Nó có nghĩa là gì? Có lẽ không có gì. Ymmv.

smop VI.m
3

Chạy bộ kiểm tra:

smop VI.m
4

Tùy chọn dòng lệnh

smop VI.m
5

Tôi có thể chuyển đổi mã MATLAB thành mã python không?

Để chuyển đổi MATLAB thành Python, một công cụ có tên SMOP [Matlab nhỏ và quãng tám thành trình biên dịch Python] được sử dụng.Công cụ này có khả năng hiểu mã MATLAB cơ bản và sau đó phân tích nó vào Python.Mặc dù luôn có những hạn chế đối với mọi công cụ, công cụ này hoạt động tốt nhất cho các mã cấp độ nhỏ.a tool named SMOP [Small Matlab and Octave to Python Compiler] is used. This tool is capable of understanding basic Matlab code and then parsing it to python. Although there are always limitations to every tool, this tool works best for small-level codes.

SMOP trong Python là gì?

Bản tóm tắt.SMOP là viết tắt của Trình biên dịch Matlab/Octave nhỏ.Nó được cho là để giúp những người cố gắng di cư từ Matlab sang Python.Mặc dù có sự tương đồng giữa hai ngôn ngữ, có đủ sự khác biệt để làm cho dịch thuật thủ công quá tốn thời gian.Small Matlab/Octave to Python compiler. It is supposed to help those who attempt migration from Matlab to Python. Despite the similarities between the two languages, there are enough differences to make manual translation too time consuming.

Bài Viết Liên Quan

Chủ Đề