最近几天一直在处理怎么将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)
转置成功啦!找了很多方法都没有符合该类问题的解决方案,如何查询问题是关键。