1、.mat檔案
matlab和python間的資料傳輸一般是基于matlab的檔案格式.mat,python中numpy和scipy提供了一些函數,可以很好的對.mat檔案的資料進行讀寫和處理。在這裡numpy作用是提供Array功能映射matlab裡面的Matrix,而scipy提供了兩個函數loadmat和savemat來讀寫.mat檔案。
# python 讀寫.mat檔案
import scipy.io as sio
import numpy as np
# python讀取.mat檔案
load_fn = ‘xxx.mat’
load_data = sio.loadmat(load_fn)
# python 儲存.mat檔案
save_fn = ‘xxx.mat’
save_array = np.array([1,2,3,4])
sio.savemat(save_fn,{‘array’:save_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})
python寫好.mat檔案,matlab裡面直接讀入.mat檔案。但是針對于數量大的資料,.mat檔案無法存儲,建議使用.h5檔案。
2、.h5檔案
python寫入.h5檔案
# python寫入.h5檔案,matlab讀入.h5檔案
# python寫.h5檔案
import h5py
import cPickle as pickle
import sys
import numpy as np
if __name__ == “__main__”:
matrix = np.array([1,2,3,4])
f = h5py.File(‘data.h5′,’w’)
f[‘matrix’] = matrix
f.close()
# matlab讀取.h5檔案
matrix = h5read(‘data.h5′,’/matrix’);
python存儲的.h5檔案中的矩陣matlab讀取時候矩陣次元會倒轉(在python中使用matrix.transpose((次元1,次元2,…,次元n))指令先進行翻轉再寫入,matlab讀取的時候就是正常次元)。
PS:圖檔傳輸的時候,uint8圖檔資料傳到matlab裡會變成double類型資料。