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/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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