Python——操作.mat文件

Python中操作.mat文件的方法。有时在python得到一些数据,需要作出曲线数据图,但是使用python中的matplotlib库作图比较单一,不能很好的展示图像。那么就需要把数据保存,然后在matlab中作图。代码如下

# -*- coding: utf-8 -*-
"""
@author: Life696
仅供学习、交流使用

"""

import scipy.io as scio

# 假设如下是需要保存到.mat文件中的数据,一共有三组
data1_list = [1,2,3,4,5,6]
data2_list = [6,5,4,3,2,1]
data3_list = [1,3,5]

# 目标文件的位置和名字。位置:和该.py文件同级;名字test_data.mat
# 如这个文件存在就直接写入这个文件;如果不存在就自动创建再写入
dataFile = './test_data.mat' 

# 数据保存在.mat文件格式为字典类型,键值对的形式。
scio.savemat(dataFile, {'data1_name' : data1_list,  
                        'data2_name' : data2_list,    
                        'data3_name' : data3_list,    
                        })

print("数据已经保存..........")


matFile = "./test_data.mat"

# 读取出这个.mat文件的数据
mat_data = scio.loadmat(matFile)

print(type(mat_data)) # 打印加载的.mat数据类型,是一个字典,键值对

print("mat_data:" , mat_data) # 打印一下.mat文件数据

# 遍历.mat数据,字典
for i in mat_data:
    print("keys:", i)            # 打印键值
    print(mat_data[i])  # 打印键的值
    
    print("***********")


print("mat_data['data1_name']:", mat_data['data1_name']) 
# 根据键,直接查看:mat_data['data1_name']: [[1 2 3 4 5 6]]
# 很明显这是一个列表中的列表

# 索引0的话,就可以完全取出这个列表的数据,索引1会报错哦!
print("mat_data['data1_name'][0]:", mat_data['data1_name'][0]) 
# mat_data['data1_name'][0]: [1 2 3 4 5 6]

# 遍历这个列表,方式1
for i in mat_data['data1_name'][0]:
    print(i)
    
# 遍历这个列表,方式2
for i in range(len(mat_data['data1_name'][0])):
    print(mat_data['data1_name'][0][i])
    
    
    
    
    

 

.mat文件中的数据组织格式如下:

值()
__header__ b'MATLAB 5.0 MAT-file Platform: nt, Created on: Thu Oct 17 14:50:56 2019'
__version__ 1.0
__globals__ []
data1_name [[1 2 3 4 5 6]]
data2_name [[6 5 4 3 2 1]]
data3_name [[1 3 5]]
... ...

注意: 

  1. .mat是一个字典,字典是没有顺序的。
  2.  不同的机器环境,__header__等键的值可能不同,不过没有什么影响
  3. data1_name键的值才是之前保存的数据,每一个键对应的值都是一个嵌套列表,使用的时候需要注意
  4. 源码可以在github上下载:https://github.com/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章