最近幾天一直在處理怎么將Mat文件中的變量自動讀取並轉換為csv數據格式,困擾了兩天,終於找對方法啦
最開始以為只有在Matlab中進行load操作將變量加載到工作區中才能看到其中所包含的變量,其實錯了!!!
load('matlab.mat')#加載數據
在Matlab工作區中就會顯示剛剛Mat文件下的所有變量(矩陣)
myvars = who#可以獲得工作區中所有變量的名稱
以為通過遍歷所有名稱就可以訪問各個矩陣了,結果名字雖相同但類型不同,“披着羊皮的狼”,原始變量因為代表的是一個矩陣,數據類型為double,而獲得的變量名字確是string類型的,所以不能通過遍歷名字直接訪問,在matlab中使用class()可以查看數據類型。
這里在介紹一下matlab中數字和字符型之間轉換的函數:num2str()將數字轉化成字符型,double2str(),str2num()將字符轉換成數字型,如果數字為double,使用str2double()
下面主要介紹一下使用python讀取並將變量轉換成相應名稱的csv文件(這里我將原始數據進行了轉置,根據自己需求進行改動代碼)
import numpy as np import h5py import pandas as pd f = h5py.File('C:\\Users\\Administrator\\Desktop\\matlab.mat','r')#原始數據路徑 variables = f.items() for var in variables: name = var[0] data = var[1] if type(data) is h5py.Dataset: # If DataSet pull the associated Data # If not a dataset, you may need to access the element sub-items value = data.value #data1 = list(data.value)[-1] dfdata = pd.DataFrame(data=value) datapath1 = 'C:\\Users\\Administrator\\Desktop\\mat\\'+name+".csv"#生成文件路徑,新建一個文件夾 dfdata.to_csv(datapath1, index=False, header=False)
轉置成功啦!找了很多方法都沒有符合該類問題的解決方案,如何查詢問題是關鍵。