반응형

안녕하세요.

 

오늘은 파이썬으로 mat파일 불러오는 실습을 해보도록 하겠습니다. 

 

제가 matlab을 잘 사용하지는 못하지만, 데이터 사이언스에서 중요한 부분이 데이터 전처리 부분이기 때문에 

 

연습하고 있습니다. 

 

우선 mat파일 하나를 불러 오겠습니다.

 

 

5637 X 768 크기의 mat파일이 있습니다.

 

그리고 위의 표는 1 X 768의 부분을 plot 한 부분입니다. 

 

위 matlab을 python에서 똑같이 구현하겠습니다.

 

우선 mat을 불러오기 위한 scipy.io와 데이터 슬라이싱을 위한 numpy와 표를 그리기 위한 matplotlib를 임포트합니다.

 

 

 

 

 

1. mat파일을 불러오기 

 

import numpy as np
import matplotlib.pylab as plt
import scipy.io

mat_file_name =  "x_test_shuffled.mat"
mat_file = scipy.io.loadmat(mat_file_name)

 

loadmat으로 불러옵니다.

 

 

 

 

 

2. mat파일 타입

 

print(type(mat_file))

 

mat_file type

타입이 'dict'으로 찍히네요. 

 

dict의 속성은("index" : "data")이 있습니다. 그렇다면 좀 더 살펴보겠습니다.

 

for i in mat_file:
    print(i)

 

dict

mat파일을 살펴보니 인덱스가 네 개가 있습니다. 여기서 실제 데이터는 

 

"x_test_shuffled"라는 인덱스에 실제 matfile 데이터가 들어 있습니다.

 

 

 

 

3. mat파일 데이터 불러오기

 

mat_file_value = mat_file[mat_file_name[:-4]]

 

mat_file_name[:-4] 뒤에 .mat부분을 자릅니다.

 

 

 

 

4. mat파일의 사이즈 불러오기

 

print("size :",len(mat_file_value), "X", len(mat_file_value[0]))

 

 

5637 X 768

 

 

5. mat파일의 1 X 768 

(*주의사항 : matlab의 배열 인덱스 : 1부터 시작, python의 배열 인덱스 : 0부터 시작)

mat_file_x = []

for i in range(0, len(mat_file_value[0])):
      mat_file_x = np.append(mat_file_x, i)

 

 

 

6. mat파일 plot하기

 

plot을 하기 위해서는 x축과 y축의 갯수가 같아야 합니다.

 

print('x :',len(mat_file_x))
print('y :',len(mat_file_value[0]))

 

 

plt.title(mat_file_name[:-4])
plt.plot(mat_file_x, mat_file_value[0])
plt.show()

 

 

matlab 그래프와 python에서 그린 그림이 똑같이 나오네요.

 





import numpy as np
import matplotlib.pylab as plt
import scipy.io

mat_file_name = "x_test_shuffled.mat"
mat_file = scipy.io.loadmat(mat_file_name)

print(type(mat_file))

for i in mat_file:
    print(i)

mat_file_value = mat_file[mat_file_name[:-4]]

print("size :",len(mat_file_value), "X", len(mat_file_value[0]))   #x축

print(mat_file_name[:-4])

mat_file_x = []

for i in range(0, len(mat_file_value[0])):
    mat_file_x = np.append(mat_file_x, i)
print('x축 :',len(mat_file_x))
print('y축 :',len(mat_file_value[0]))

plt.title(mat_file_name[:-4])
plt.plot(mat_file_x, mat_file_value[0])
plt.show()





 

 

 

아직 많이 미숙하지만 좀 더 데이터를 다루는 연습을 해서 더 많은 글을 올리도록 하겠습니다.

728x90
반응형

+ Recent posts