Hướng dẫn convert matlab to python reddit - chuyển đổi matlab sang python reddit

Python là một ngôn ngữ kịch bản giống như Matlab, tuyến đường tốt nhất rất có thể sẽ chỉ đơn giản là viết lại logic trong Python.

Nếu bạn muốn chuyển đổi chính xác, trước tiên bạn sẽ cần chuyển đổi sang C bằng cách sử dụng mã hóa MATLABS C, sau đó viết một trình bao bọc mỏng trong C giao diện với MATLAB được chuyển đổi và phơi bày các chức năng có thể được gọi từ Python. Sở thích của tôi đối với C đến Python Interop là Python Ctypes, nó được hỗ trợ tốt với nhiều tài liệu.

Nhiệm vụ hiện tại của tôi là vẽ một tệp .mat trong Python. Để vẽ sơ đồ với kết quả tương tự như trong MATLAB, tôi cần sử dụng hộp công cụ MATLAB. Tôi đã cố gắng sử dụng API MATLAB Engine, mô -đun SMOP, v.v. để chuyển hộp công cụ MATLAB đến Python. Nhưng tôi không thể làm cho nó hoạt động vì cổng đã lỗi thời hoặc có vấn đề với định dạng dữ liệu. Cuối cùng tôi đã dịch các chức năng MATLAB từng người một sang định dạng Python.

Đa co ai đo tưng lam việc nay trươc đây chưa? Có phải viết lại mã là một cách hiệu quả để làm điều đó?

Tôi chỉ muốn biết nếu tôi đi đúng hướng trước khi tôi vào quá sâu.

Cảm ơn trước!

Được đăng bởi 9 năm trước9 years ago

Lưu trữ

Hướng dẫn convert matlab to python reddit - chuyển đổi matlab sang python reddit

Có bất kỳ bộ chuyển đổi trực tuyến/chương trình có thể tải xuống nào có thể chuyển đổi mã MATLAB của tôi thành Python không? Tôi có rất nhiều mã từ một dự án ở Matlab nhưng tôi cần chuyển đổi nó thành Python vì Python là nguồn mở và không cần giấy phép.

Chủ đề này được lưu trữ

Nhận xét mới không thể được đăng và phiếu bầu không thể được chọn

Hướng dẫn convert matlab to python reddit - chuyển đổi matlab sang python reddit

cấp độ 1

Bạn đã xem bài viết Stackoverflow này chưa? Đó là kết quả đầu tiên của Google. Nói chung, tôi muốn nói rằng điều này khá khó khăn để có được đúng và tôi nghi ngờ bất kỳ công cụ hiện tại nào sẽ làm một công việc thỏa đáng 100%.

Ngoài ra, bạn có thể thử GNU Octave, một ngôn ngữ nguồn mở có phần tương thích với MATLAB. Hãy thử chạy tập lệnh của bạn trong Octave và sau đó sửa bất kỳ lỗi cú pháp nào bạn thấy. Tùy thuộc vào mức độ lớn chính xác của bạn, điều này có thể khó khăn.

cấp độ 2

Tôi đã nhìn thấy những thứ này nhưng cảm ơn vì những người đứng đầu với Octave! Vì đó là GNU nên tôi chắc rằng nó là nguồn mở.

Vâng, tôi đã chạy! Pip cài đặt SMOP. Việc cài đặt đã hoạt động và Google Colab được công nhận. Nhưng làm cách nào để dịch một tệp? Tôi nên sử dụng lệnh nào? Trên diễn đàn này, ai đó đã trả lời là "smop vi.m" trong đó "vi" là tên tệp. Nhưng điều này không hiệu quả với tôi. Tệp .m của tôi đã được tải vào colab. Nó trả về một vấn đề Syntex không hợp lệ

Này tất cả, giáo sư của tôi đã cho tôi một số mã MATLAB để sử dụng trong một tập tin cho nghiên cứu của tôi. Tôi đã liên tục học Python trong thời gian rảnh rỗi và muốn chuyển đổi điều này từ Matlab sang Python. Dưới đây là mã MATLAB nhận xét của tôi về những gì tôi diễn giải mọi dòng để làm

DARK = [2348;2779;2566;2677;2754];
DARK = mean(DARK);

s1 = 'Ibs = "'; #Starting string
s2 = '" I0'; #Ending string

file = 'livelogfile.log'; # Set file to be the excel file that is the input
fid = fopen([file],'r'); # I assume 'r' stands for read, which makes sense
file2 = 'Ibs_corrected.log'; # Set file2 to be a new excel file, the output
fid2 = fopen([file2],'wt'); # Again, assuming 'wt' is write. Write to that new file

tline = fgetl(fid); # This seems look for a specific line in fid (file1)

while ischar(tline) # While on that line, do the following. This is where I get confused

% tline = fgetl(fid);
i1 = regexp(tline,s1,'end') + 1;
i2 = regexp(tline,s2,'start') - 1;
nu = tline(i1:i2);
nu2 = num2str(round(str2num(nu) - DARK));
s = regexprep(tline,[s1,nu,s2],[s1,nu2,s2]);
fprintf(fid2,'%s\n',s);
tline = fgetl(fid);

end
fclose(fid);
fclose(fid2);
toc;

Vì vậy, tôi đang tự hỏi làm thế nào để tiếp cận điều này. Thứ nhất, Matlab và Python thậm chí có tương thích không?

Như những người khác đã nói, bạn có thể chuyển đổi thành Python bằng cách thay đổi cú pháp (và sử dụng các mảng Numpy làm loại dữ liệu chính của bạn thay vì tích hợp).

Và đó là một chiến lược chấp nhận được. Nhưng một trong những vẻ đẹp của Python (theo ý kiến ​​của tôi) là chính ngôn ngữ. Mặc dù Matlab có một số thứ hướng đối tượng, nhưng trong Python, mọi thứ đều là một đối tượng, cho dù bạn sử dụng nó theo cách đó hay không. Bạn sẽ bán mình ngắn nếu bạn không cố gắng suy nghĩ và tận dụng tính năng đó.

Thêm vào đó, có rất nhiều thứ thực sự tốt đẹp trong Python như xử lý chuỗi, v.v.

Tôi nghĩ rằng các ghi chú bài giảng của Scipy là một trong những cách tốt nhất để tham gia vào Python từ Matlab. Nó không phải là một hướng dẫn Python MATLAB <==> vì điều đó sẽ không thực sự dạy bạn nhiều. Thay vào đó, đó là cách sử dụng Python cho cùng một loại thứ bạn có thể sử dụng Matlab.

Mẹo chuyên nghiệp: Nếu một hướng dẫn từng nói làm điều gì đó như

from  import *

chạy trốn! Vẻ đẹp của Python là nó phạm vi và không gian tên. Đừng vứt chúng đi. Sau đó cũng có một số căn cứ giữa. Ví dụ, tôi nghĩ

from numpy import zeros,ones, 

cũng xấu, mặc dù

from datetime import datetime

là khá chuẩn.

Nếu bạn không biết tôi đang nói gì, nói chung bạn làm điều gì đó như

import numpy as np

Sau đó, để có được chức năng ones, bạn làm np.ones. Chắc chắn đó là nhiều dòng hơn nhưng bây giờ bạn biết chính xác các chức năng của bạn đến từ đâu. Trong Matlab, những cái tên cho bạn biết rất ít. Và không ở trong môi trường tương tác và gọi những thứ như which, bạn không bao giờ thực sự biết.

/Bước tắt hộp xà phòng

Mã Matlab có thể được chuyển đổi thành 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.

Làm cách nào để nhập mã MATLAB vào Python?

Bắt đầu động cơ MATLAB cho Python..
Bắt đầu Python® tại dấu nhắc hệ điều hành ..
Nhập MATLAB.Gói độ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 cho phép bạn truyền dữ liệu và gọi các chức năng được thực hiện bởi MATLAB ..

Mã MATLAB có thể được chuyển đổi thành C không?

Để chuyển đổi mã MATLAB® thành mã C điểm cố định bằng ứng dụng MATLAB Coder ™: Mở ứng dụng Coder MATLAB.Trên trang chọn Tệp nguồn, thêm chức năng nhập cảnh mà bạn muốn tạo mã.Đặt chuyển đổi số để chuyển đổi thành điểm cố định.® Code to fixed-point C Code using the MATLAB Coder™ app: Open the MATLAB Coder app. On the Select Source Files page, add the entry-point function from which you want to generate code. Set Numeric Conversion to Convert to fixed point .

Làm cách nào để cài đặt SMOP?

Đối với cài đặt Dummies (Ubuntu) #149..
1: Thiết bị đầu cuối mở: Tùy chọn 1: Ctrl +Alt +T.....
2: Kiểm tra môi trường bạn đang sử dụng.....
3: Mở Anaconda.....
4 Tạo môi trường Python2 mới.....
5 Kích hoạt môi trường mới được tạo: ....
6 Cài đặt Smop.....
Cuối cùng: Phiên bản kiểm tra của SMOP.....
Chuyển đổi một tệp từ MATLAB ..