使用python将mat文件转换为txt

使用python将.mat文件转化为txt文件
最近使用了spm对fmri数据进行处理,处理后得到的DFC矩阵是.mat格式,需要对其进行txt化方便后续实验,记录一下做法;
1.数据格式
首先,我的数据格式是这样的
使用python将mat文件转换为txt_第1张图片DRStruct是变量名称,其中每一个W_0001_0020代表一个样本的时间点数据,每一个时间点数据为9090的矩阵,因此,我需要按照 样本1——时间点数据(100个时间点)的格式对其进行格式转化,也即一个w开头文件得到一个txt文件,有n个样本,每个样本m个时间点,我就应该得到mn个txt文件DRStruct是变量名称,其中每一个W_0001_0020代表一个样本的时间点数据,每一个时间点数据为9090的矩阵,因此,我需要按照 样本1——时间点数据(100个时间点)的格式对其进行格式转化,也即一个w开头文件得到一个txt文件,有n个样本,每个样本m个时间点,我就应该得到mn个txt文件

2.程序实现
2.1创建文件夹
每一个样本一个文件夹,手动太麻烦,因此需要程序实现
代码如下:

import os
def mkdir(path):
    folder = os.path.exists(path)
            
    if not folder:                   #判断是否存在文件夹如果不存在则创建为文件夹
            os.makedirs(path)            #makedirs 创建文件时如果路径不存在会创建这个路径
            print ("---  new folder...  ---")
            print ("---  OK  ---")
 
    else:
            print ("---  There is this folder!  ---")
for y in range (373,424) :                         
	print (y)
    file = 'G:\\ABIDE_3-29373-29423\\result\\'+str(y)+''
    mkdir(file)             #调用函数
#########################################################
#mat转txt
import scipy.io as scio
import numpy as np
def mat2txt(path):
    data = scio.loadmat(path)
    x = data['DRStruct']
    return x
def mat2txt1(title,path):
    data_all = mat2txt(path)
    data1 = data_all[0,0][title]
    return data1
if __name__ == '__main__':
   for i in range (411,424):
       print (i)
       #k = mat2txt(path = 'H:\\ABIDE_1-29273-29322\\GretnaDFCMatrixR\\r29'+str(i)+'.mat')
       for j in range (1,133):
       		'''这一段是由于我的文件标号‘1’是‘001’,‘2’是‘002’,如无必要可忽略'''
           m = str(j)
           n = m.zfill(3)
           p = j+19
           q = str(p)
           r = q.zfill(3)
           '''################################################'''
           result = mat2txt1(title = 'W_0'+str(n)+'_0'+str(r)+'',path = 'G:\\ABIDE_3-29373-29423\\GretnaDFCMatrixR\\r29'+str(i)+'.mat')
           np.savetxt('G:\\ABIDE_3-29373-29423\\result\\'+str(i)+'\\'+str(j)+'.txt',result)

你可能感兴趣的:(python)