파이썬에서 .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.loadmat
MATLAB 배열 버전 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 dict
과 list
객체 만 사용하여 간단한 Python 데이터 구조로로드 합니다. 숫자 형 배열과 셀형 배열은 행 순서로 중첩 된 목록으로 변환됩니다. 하나의 요소 만있는 배열을 제거하기 위해 배열을 압착합니다. 결과 데이터 구조는 JSON 형식 과 호환되는 간단한 유형으로 구성 됩니다.
예 : Python 데이터 구조에 MAT 파일을로드하십시오.
from mat4py import loadmat
data = loadmat('datafile.mat')
변수 data
는 dict
MAT 파일에 포함 된 변수와 값 이있는 a 입니다.
Python 데이터 구조를 MAT 파일에 저장
Python 데이터는 함수를 사용하여 MAT 파일에 저장할 수 있습니다 savemat
. 데이터와 동일한 방식으로 구성되어야한다 loadmat
, 그것은 단순한 데이터 유형 등으로 구성되어야한다, 즉 dict
, list
, str
, int
, 및 float
.
예 : Python 데이터 구조를 MAT 파일에 저장하십시오.
from mat4py import savemat
savemat('datafile.mat', data)
변수 data
는 dict
변수와 함께 있어야합니다.
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 변수 이고 값 은 해당 변수에 지정된 객체 입니다.
MathWorks 자체의 Python 용 MATLAB 엔진 도 있습니다. MATLAB이 있다면 고려해 볼 가치가 있습니다. (내가 직접 시도하지는 않았지만 MATLAB 파일을 읽는 것보다 훨씬 더 많은 기능을 가지고 있습니다). 그러나 다른 사용자에게 배포 할 수 있는지 여부는 알 수 없습니다 (MATLAB이 있으면 문제가되지 않습니다. 그렇지 않으면 NumPy가 올바른 방법 일 수 있습니다).
또한 모든 기본 사항을 직접 수행하려는 경우 MathWorks는 파일 형식의 구조에 대한 자세한 문서를 제공합니다 (링크가 변경되면 Google에 matfile_format.pdf
제목이나 제목을 입력하십시오 MAT-FILE Format
). 개인적으로 생각하는 것만 큼 복잡하지는 않지만 분명히 가장 쉬운 방법은 아닙니다. 또한 .mat
지원하려는 -file의 기능 수에 따라 다릅니다 .
기본 파일을 읽을 수있는 "작은"(약 700 줄) Python 스크립트를 작성했습니다 .mat
. 나는 파이썬 전문가도 초보자도 아니며 그것을 작성하는 데 2 일이 걸렸습니다 (위의 MathWorks 문서 사용). 나는 많은 새로운 것들을 배웠고 (대부분) 꽤 재미있었습니다. 직장에서 Python 스크립트를 작성 했으므로 게시 할 수 없습니다 ... 그러나 여기에 조언을 해줄 수 있습니다.
- 먼저 설명서를 읽으십시오.
- 16 진 편집기 (예 : HxD )
.mat
를 사용하여 구문 분석 할 참조 파일을 찾으십시오 . - 바이트를 .txt 파일에 저장하고 각 줄에 주석을 달아 각 바이트의 의미를 파악하십시오.
- (예 : 각 데이터 요소를 저장하는 클래스를 사용하여
miCOMPRESSED
,miMATRIX
,mxDOUBLE
, 또는miINT32
) .mat
-files '구조는 트리 데이터 구조의 데이터 요소를 저장하기에 적합하다; 각 노드에는 하나의 클래스와 하위 노드가 있습니다
참고 URL : https://stackoverflow.com/questions/874461/read-mat-files-in-python
'Programming' 카테고리의 다른 글
복잡한 Git 브랜치 이름으로 모든 Git 명령이 중단됨 (0) | 2020.03.03 |
---|---|
이진 파일 읽기 및 각 바이트 반복 (0) | 2020.03.03 |
JavaScript에서 span 요소의 텍스트를 변경하는 방법 (0) | 2020.03.03 |
Linux에서 pthread_create에 대한 정의되지 않은 참조 (0) | 2020.03.03 |
PHP Explode ()와 동등한 자바 스크립트 (0) | 2020.03.03 |