File IO (scipy.io)
See also
numpy-reference.routines.io (in numpy)
MATLAB files
*loadmat(file_name[, mdict, appendmat])* Load MATLAB file
*savemat(file_name, mdict[, appendmat, ...])* Save a dictionary of names and arrays into a MATLAB-style .mat file.
*whosmat(file_name[, appendmat])* List variables inside a MATLAB file
How to do
import scipy.io as sio
mat_contents = sio.loadmat('octave_a.mat')
mat_contents
>>>{'a': array([[[ 1., 4., 7., 10.],
[ 2., 5., 8., 11.],
[ 3., 6., 9., 12.]]]),
'__version__': '1.0',
'__header__': 'MATLAB 5.0 MAT-file, written by
Octave 3.6.3, 2013-02-17 21:02:11 UTC',
'__globals__': []}
oct_a = mat_contents['a']
oct_a
>>>array([[[ 1., 4., 7., 10.],
[ 2., 5., 8., 11.],
[ 3., 6., 9., 12.]]])
oct_a.shape
>>>(1, 3, 4)
sio.savemat('np_vector.mat', {'vect':vect})
If you want to inspect the contents of a MATLAB file without reading the data into memory, use the whosmat command:
sio.whosmat('octave_a.mat')
>>>[('a', (1, 3, 4), 'double')]
对于高版本的.mat数据读写,需要使用另外的接口
import h5py
datasets = F:/MuraDefectData_6X6_10W_NonZCA_Batches.mat'
f = h5py.File(datasets, 'r')
TotalBatchImg = f['TotalBatchImg']
TotalBatchImg = np.array(TotalBatchImg)
wSize = f['wSize']
wSize = np.array(wSize)