[python] 파이썬에서 .mat 파일 읽기

파이썬에서 이진 MATLAB .mat 파일을 읽을 수 있습니까?

SciPy가 .mat 파일 읽기를 지원한다고 주장했지만 성공하지 못했습니다. SciPy 버전 0.7.0을 설치했는데 loadmat()방법을 찾을 수 없습니다 .



답변

수입이 필요합니다 import scipy.io

import scipy.io
mat = scipy.io.loadmat('file.mat')


답변

어느 scipy.io.savemat없으며, scipy.io.loadmatMATLAB 배열 버전 7.3에 대한 작업. 그러나 MATLAB 버전 7.3 파일은 hdf5 데이터 세트라는 것이 좋습니다. 따라서 NumPy를 포함한 여러 도구를 사용하여 읽을 수 있습니다 .

Python의 경우 h5py시스템에 HDF5 가 필요한 확장 이 필요합니다 .

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


답변

먼저 .mat 파일을 다음과 같이 저장하십시오.

save('test.mat', '-v7')

그 후 파이썬에서는 일반적인 loadmat함수를 사용하십시오 .

import scipy.io as sio
test = sio.loadmat('test.mat')


답변

다음을 mat4py사용하여 쉽게 설치할 수 있는 멋진 패키지 가 있습니다.

pip install mat4py

웹 사이트에서 사용하는 것이 간단합니다.

MAT 파일에서 데이터로드

이 함수 loadmat는 MAT 파일에 저장된 모든 변수를 Python dictlist객체 만 사용하여 간단한 Python 데이터 구조로로드 합니다. 숫자 형 배열과 셀형 배열은 행 순서로 중첩 된 목록으로 변환됩니다. 하나의 요소 만있는 배열을 제거하기 위해 배열을 압착합니다. 결과 데이터 구조는 JSON 과 호환되는 간단한 유형으로 구성됩니다. 형식 됩니다.

예 : Python 데이터 구조에 MAT 파일을로드하십시오.

from mat4py import loadmat

data = loadmat('datafile.mat')

변수 datadictMAT 파일에 포함 된 변수와 값 이있는 a 입니다.

Python 데이터 구조를 MAT 파일에 저장

Python 데이터는 함수를 사용하여 MAT 파일에 저장할 수 있습니다 savemat. 데이터와 동일한 방식으로 구성되어야한다 loadmat, 그것이 단순 데이터 타입들로 구성되어야한다, 즉 같은 dict, list, str, int, 및float .

예 : Python 데이터 구조를 MAT 파일에 저장하십시오.

from mat4py import savemat

savemat('datafile.mat', data)

변수 datadict변수와 함께 있어야합니다.


답변

MATLAB 2014b 이상을 설치하면 Python 용 MATLAB 엔진을 사용할 수 있습니다.

import matlab.engine
eng = matlab.engine.start_matlab()
content = eng.load("example.mat", nargout=1)


답변

파일 읽기

import scipy.io
mat = scipy.io.loadmat(file_name)

MAT 변수의 유형 검사

print(type(mat))
#OUTPUT - <class 'dict'>

사전 내부 의 MATLAB 변수 이고 해당 변수에 지정된 객체 입니다.


답변

파이썬 용 MATLAB 엔진 도 있습니다MathWorks 자체의 있습니다. MATLAB이 있다면 고려해 볼 가치가 있습니다 (내가 직접 시도하지는 않았지만 MATLAB 파일을 읽는 것보다 훨씬 더 많은 기능을 가지고 있습니다). 그러나 다른 사용자에게 배포 할 수 있는지 여부는 알 수 없습니다 (MATLAB이 있으면 문제가되지 않습니다. 그렇지 않으면 NumPy가 올바른 방법 일 수 있습니다).

또한 모든 기본 사항을 직접 수행하려는 경우 MathWorks는 파일 형식의 구조에 대한 자세한 문서를 제공합니다 (링크가 변경되면 Google에 matfile_format.pdf제목이나 제목을 입력하십시오 MAT-FILE Format). 개인적으로 생각하는 것만 큼 복잡하지는 않지만 분명히 가장 쉬운 방법은 아닙니다. 그것은 또한 얼마나 많은 기능에 의존.mat 지원하려는 -file의 .

기본 파일을 읽을 수있는 “작은”(약 700 줄) Python 스크립트를 작성했습니다 .mat. 저는 파이썬 전문가도 초보자도 아니며, 위에 링크 된 MathWorks 문서를 사용하여 작성하는 데 약 이틀이 걸렸습니다. 나는 많은 새로운 것들을 배웠고 꽤 재미있었습니다. 직장에서 Python 스크립트를 작성 했으므로 게시 할 수 없습니다 … 그러나 여기에 조언을 해줄 수 있습니다.

  • 먼저 설명서를 읽으십시오.
  • 16 진 편집기 (예 : HxD ) .mat를 사용하여 구문 분석 할 참조 파일을 찾으십시오 .
  • 바이트를 .txt 파일에 저장하고 각 줄에 주석을 달아 각 바이트의 의미를 알아 봅니다.
  • (예 : 각 데이터 요소를 저장하는 클래스를 사용하여 miCOMPRESSED, miMATRIX, mxDOUBLE, 또는 miINT32)
  • .mat-files ‘구조는 트리 데이터 구조의 데이터 요소를 저장하기에 적합하다; 각 노드에는 하나의 클래스와 하위 노드가 있습니다