Tôi có thể mở .mat bằng python không?
MATLAB là một nền tảng lập trình được sử dụng rộng rãi ngày nay để tính toán số, phân tích thống kê và tạo thuật toán. Đó là một ngôn ngữ rất linh hoạt và cho phép chúng tôi tích hợp công việc của mình với các ngôn ngữ lập trình khác nhau như Python Show
Không gian làm việc MATLAB lưu tất cả các biến và nội dung của nó trong tệp Sử dụng Mô-đun scipy.io để đọc các tệp .mat trong PythonMô-đun
Lưu ý rằng phương pháp này không hoạt động đối với phiên bản MATLAB dưới 7. 3. Chúng tôi có thể lưu tệp Sử dụng Mô-đun import numpy as np import h5py f = h5py.File('somefile.mat','r') data = f.get('data/variable1') data = np.array(data) # For converting to a NumPy array 2 để đọc các tệp mat bằng PythonNó đã được thảo luận trước đó về cách chúng tôi không thể mở tệp trong MATLAB 7. 3 sử dụng mô-đun 2. Để phương pháp này hoạt động, mô-đun 6 cần được cài đặt, mô-đun này yêu cầu HDF5 trên hệ thống của bạnĐoạn mã dưới đây cho biết cách đọc các tệp
Sử dụng Mô-đun import numpy as np import h5py f = h5py.File('somefile.mat','r') data = f.get('data/variable1') data = np.array(data) # For converting to a NumPy array 8 để đọc các tệp mat bằng PythonMô-đun này có các chức năng cho phép chúng tôi ghi và đọc dữ liệu đến và từ các tệp MATLAB Hàm Ví dụ,
Sử dụng Mô-đun from mat4py import loadmat data = loadmat('example.mat') 3 để đọc các tệp mat bằng PythonĐối với những người dùng đã có MATLAB có thể sử dụng 3 do chính MathWorks cung cấp. Nó có rất nhiều chức năng, mở rộng ra nhiều thứ hơn là chỉ đọc và viết “. tập tin mat” Tên của tệp mat (không cần. phần mở rộng mat nếu appendmat==True). Cũng có thể chuyển đối tượng giống như tệp đang mở mdict chính tả, tùy chọnTừ điển để chèn các biến matfile appendmat bool, tùy chọnĐúng để nối thêm. mat vào cuối tên tệp đã cho, nếu chưa có. Mặc định là Đúng byte_order str hoặc Không, tùy chọnNone by default, implying byte order guessed from mat file. Otherwise can be one of (‘native’, ‘=’, ‘little’, ‘<’, ‘BIG’, ‘>’). mat_dtype bool, tùy chọnNếu đúng, trả về các mảng có cùng kiểu dữ liệu như sẽ được tải vào MATLAB (thay vì kiểu dữ liệu mà chúng được lưu) squeeze_me bool, tùy chọnCó ép kích thước ma trận đơn vị hay không chars_as_strings bool, tùy chọnCó chuyển đổi mảng char thành mảng chuỗi hay không matlab_ compatible bool, tùy chọnTrả về ma trận như sẽ được tải bởi MATLAB (ngụ ý bóp_me=False, chars_as_strings=False, mat_dtype=True, struct_as_record=True) struct_as_record bool, tùy chọnTải các cấu trúc MATLAB dưới dạng mảng bản ghi NumPy hay dưới dạng mảng NumPy kiểu cũ với dtype=object. Đặt cờ này thành Sai sẽ sao chép hành vi của phiên bản scipy 0. 7. x (trả về mảng đối tượng NumPy). Cài đặt mặc định là True, vì nó cho phép tải và lưu các tệp MATLAB dễ dàng hơn Có nên kiểm tra độ dài của các chuỗi nén trong tệp MATLAB hay không để đảm bảo rằng chúng không dài hơn chúng ta mong đợi. Bạn nên kích hoạt tính năng này (mặc định) vì các chuỗi nén quá lâu trong các tệp MATLAB thường chỉ ra rằng các tệp đã gặp phải một số loại lỗi tên_biến Không có hoặc trình tựNếu Không có (mặc định) - đọc tất cả các biến trong tệp. Mặt khác, tên_biến phải là một chuỗi các chuỗi, cung cấp tên của các biến MATLAB để đọc từ tệp. Trình đọc sẽ bỏ qua bất kỳ biến nào có tên không theo trình tự này, có thể tiết kiệm một số xử lý đọc simplify_cells Sai, tùy chọnNếu Đúng, hãy trả về cấu trúc chính tả được đơn giản hóa (rất hữu ích nếu tệp mat chứa các mảng ô). Lưu ý rằng điều này chỉ ảnh hưởng đến cấu trúc của kết quả chứ không ảnh hưởng đến nội dung của nó (giống hệt nhau cho cả hai cấu trúc đầu ra). Nếu Đúng, điều này sẽ tự động đặt struct_as_record thành Sai và Squeeze_me thành True, cần thiết để đơn giản hóa các ô Trả về . mat_dict mệnh lệnhtừ điển có tên biến làm khóa và ma trận được tải làm giá trị ghi chú v4 (Cấp 1. 0), v6 và v7 đến 7. 2 tệp matfile được hỗ trợ Bạn sẽ cần thư viện HDF5 Python để đọc MATLAB 7. 3 tập tin mat định dạng. Vì SciPy không cung cấp nên chúng tôi không triển khai HDF5/7. 3 giao diện tại đây ví dụ >>> from os.path import dirname, join as pjoin >>> import scipy.io as sio Lấy tên tệp cho một ví dụ. mat từ thư mục tests/data >>> data_dir = pjoin(dirname(sio.__file__), 'matlab', 'tests', 'data') >>> mat_fname = pjoin(data_dir, 'testdouble_7.4_GLNX86.mat') tải. nội dung tập tin mat >>> mat_contents = sio.loadmat(mat_fname) Kết quả là một từ điển, một cặp khóa/giá trị cho mỗi biến >>> sorted(mat_contents.keys()) ['__globals__', '__header__', '__version__', 'testdouble'] >>> mat_contents['testdouble'] array([[0. , 0.78539816, 1.57079633, 2.35619449, 3.14159265, 3.92699082, 4.71238898, 5.49778714, 6.28318531]]) Theo mặc định, SciPy đọc các cấu trúc MATLAB dưới dạng các mảng NumPy có cấu trúc trong đó các trường dtype là đối tượng kiểu và các tên tương ứng với các tên trường cấu trúc MATLAB. Điều này có thể bị vô hiệu hóa bằng cách đặt đối số tùy chọn struct_as_record=False Lấy tên tệp cho một ví dụ. mat chứa cấu trúc MATLAB được gọi là teststruct và tải nội dung >>> matstruct_fname = pjoin(data_dir, 'teststruct_7.4_GLNX86.mat') >>> matstruct_contents = sio.loadmat(matstruct_fname) >>> teststruct = matstruct_contents['teststruct'] >>> teststruct.dtype dtype([('stringfield', 'O'), ('doublefield', 'O'), ('complexfield', 'O')]) Kích thước của mảng có cấu trúc là kích thước của cấu trúc MATLAB, không phải số phần tử trong bất kỳ trường cụ thể nào. Hình dạng mặc định là 2-D trừ khi đối số tùy chọn squeeze_me=True, trong trường hợp đó, tất cả kích thước chiều dài 1 đều bị xóa bạn có thể mở một. Tệp MAT bằng Python?Bắt đầu từ phiên bản 7. 3 của Matlab, các tệp mat thực sự được lưu bằng định dạng HDF5 theo mặc định (ngoại trừ nếu bạn sử dụng cờ -vX khi lưu thời gian, xem trong Matlab). Ví dụ, các tệp này có thể được đọc bằng Python bằng cách sử dụng gói PyTables hoặc h5py
Làm cách nào để tải các tệp MATLAB MAT bằng Python?Nhập tệp Matlab bằng scipy . Trong 1]. nhập scipy. io # Nhập vào từ điển python mat = scipy. io. thảm tải ('. /input/Dataset_PerCom18_STL/Dataset_PerCom18_STL/cross_opp. chiếu') # Nhìn vào các mục từ điển. items() Hết[3]. . # In ra mat dữ liệu["data_opp"] Ra[4] Làm cách nào để sử dụng dữ liệu MATLAB trong Python?Nếu bạn thu thập dữ liệu bằng Matlab nhưng muốn làm việc với nó bằng Python (e. g. tạo các biểu đồ đẹp với matplotlib), bạn có thể xuất một. mat và sau đó nhập tệp đó vào Python bằng SciPy . Hãy nhớ rằng trong lập chỉ mục Python bắt đầu từ 0, thay vì 1 (đó là cách Matlab thực hiện). |