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

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 mat. Trong hướng dẫn này, chúng ta sẽ học cách mở và đọc các tệp mat bằng Python

Sử dụng Mô-đun scipy.io để đọc các tệp .mat trong Python

Mô-đun scipy.io có chức năng loadmat[], có thể mở và đọc các tệp mat. Đoạn mã sau cho thấy cách sử dụng chức năng này

import scipy.io
mat = scipy.io.loadmat['file.mat'] 

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 mat trong các phiên bản thấp hơn bằng lệnh bên dưới trong MATLAB để tránh điều này

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 Python

Nó đã đượ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 scipy.io trong Python. Điều đáng chú ý là các tệp trong phiên bản 7. 3 trở lên là bộ dữ liệu hdf5, có nghĩa là chúng ta có thể mở chúng bằng thư viện

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. Để phương pháp này hoạt độ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
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 mat bằng phương pháp này

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

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 Python

Mô-đ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 loadmat[] đọc các tệp MATLAB và lưu trữ chúng trong các cấu trúc Python cơ bản như danh sách hoặc từ điển và tương tự như hàm loadmat[] từ scipy.io

Ví dụ,

from mat4py import loadmat

data = loadmat['example.mat']

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

from mat4py import loadmat

data = loadmat['example.mat']
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ọn

Từ đ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ọn

None by default, implying byte order guessed from mat file. Otherwise can be one of [‘native’, ‘=’, ‘little’, ‘’].

mat_dtype bool, tùy chọn

Nế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ọn

Có ép kích thước ma trận đơn vị hay không

chars_as_strings bool, tùy chọn

Có chuyển đổi mảng char thành mảng chuỗi hay không

matlab_ compatible bool, tùy chọn

Trả 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ọn

Tả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

verify_compressed_data_integrity bool, tùy chọ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ọn

Nế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ệnh

từ đ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].

Chủ Đề