Python数据和matlab数据转换


http://blog.csdn.net/landiaoxinqing/article/details/48622057


1. Python数据和matlab数据转换

1.1 Python加载和写入.mat文件

File IO (scipy.io)

See also
numpy-reference.routines.io (in numpy)
  • 1
  • 2
  • 1
  • 2

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
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

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})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

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')]
  • 1
  • 2
  • 1
  • 2

对于高版本的.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)

你可能感兴趣的:(python)