一般,在matlab编写中会得到.mat格式的数组,是matlab特有的存储数据的文件格式,我们有时需要将其转化为txt文件格式来存储数据,那么话不多说,直接上代码:
import scipy.io as sio
import numpy as np
import os
#source_dir_pth存放需要进行转换的.mat文件
source_dir_pth = "params/"
#des_dir_pth存放转换后的txt文件
des_dir_pth = "params_txt/"
mat_filenames = os.listdir(source_dir_pth)
#遍历原文件夹
for mat_filename in mat_filenames:
#将文件名与后缀分割开,split_filename[0]:文件名,split_filename[1]:文件后缀
split_filename = os.path.splitext(mat_filename)
#加载.mat文件 .mat文件是字典的形式,可通过print(matdata)观察
matdata = sio.loadmat(source_dir_pth + mat_filename)
#获取所需的数据
data = matdata[split_filename[0]]
#由于savetxt()函数只支持一维或二维数组,所以将data展开为一维数组
data = data.reshape(-1,1)
#保存到小数点后5位,并以指数计数法表示
np.savetxt(des_dir_pth+split_filename[0]+".txt",data,fmt='%.5e',delimiter="\n")
之前在网上找代码的时候,首先是savetxt函数,但是这个函数有个弊端,就是只能转化一维和二维数组,再高就会报错,然后又找到了save函数支持转化多维数组,但是文件格式并不是txt,而是npy文件,并不是我们想要的,所以将数组展开成一维数组就能很好的解决这个问题!!!!