python讀寫.mat檔案
阿新 • • 發佈:2019-01-05
背景
在做deeplearning過程中,使用caffe的框架,一般使用matlab來處理圖片(matlab處理圖片相對簡單,高效),用Python來生成需要的lmdb檔案以及做test產生結果。所以某些matlab從圖片處理得到的label資訊都會以.mat檔案供python讀取,同時也python產生的結果資訊也需要matlab來做進一步的處理(當然也可以使用txt,不嫌麻煩自己處理結構資訊)。
介紹
matlab和python間的資料傳輸一般是基於matlab的檔案格式.mat,python中numpy和scipy提供了一些函式,可以很好的對.mat檔案的資料進行讀寫和處理。
在這裡numpy作用是提供Array功能對映matlab裡面的Matrix,而scipy提供了兩個函式loadmat和savemat來讀寫.mat檔案。
示例
-
import scipy.io
as sio
-
import numpy
as np
-
-
###下面是講解python怎麼讀取.mat檔案以及怎麼處理得到的結果###
-
load_fn =
'xxx.mat'
-
load_data = sio.loadmat(load_fn)
-
load_matrix = load_data[
'matrix']
#假設檔案中存有字元變數是matrix,例如matlab中save(load_fn, 'matrix');當然可以儲存多個save(load_fn, 'matrix_x', 'matrix_y', ...);
-
load_matrix_row = load_matrix[
0
]
#取了當時matlab中matrix的第一行,python中陣列行排列
-
-
###下面是講解python怎麼儲存.mat檔案供matlab程式使用###
-
save_fn =
'xxx.mat'
-
save_array = np.array([
1,
2,
3,
4])
-
sio.savemat(save_fn, {
'array': save_array})
#和上面的一樣,存在了array變數的第一行
-
-
save_array_x = np.array([
1,
2,
3,
4])
-
save_array_y = np.array([
5,
6,
7,
8])
-
sio.savemat(save_fn, {
'array_x': save_array_x,
'array_x': save_array_x})
#同理,只是存入了兩個不同的變數供使用