python和matlab之间数据传输方法

转自链接:https://www.jianshu.com/p/8da7398fa889

 

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读取的时候就是正常维度)。

posted @ 2018-05-30 13:10  勤奋的小呆  阅读(2132)  评论(0)    收藏  举报