用python将mat文件中的变量批量转换成csv格式

Posted on 2021-02-10 09:45  Smilesq  阅读(2156)  评论(0编辑  收藏  举报

最近几天一直在处理怎么将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)

转置成功啦!找了很多方法都没有符合该类问题的解决方案,如何查询问题是关键。