1、.mat格式的数据转换为.dat格式,自动识别.mat数据的纬度,根据不同纬度进行转换。
把列表转换为numpy的数组格式,再根据shape方法,可以得到mat数据的纬度。
# -*- coding: utf-8 -*-
#coding=utf-8
from scipy.io import loadmat
import numpy as np
import sys
def saveData1(path):
file = open(path+"\\"+"data.dat", "w+")
for i in range(len(dataList)):#1
dataStr=dataList[i]
a=dataList[i].real
b=dataList[i].imag
c = int(a)
d = int(b)
e=hex(c&0xffff)
f=hex(d&0xffff)
m=e[2:]
n=f[2:]
if c>=0:
for k in range(4-len(m)):
m="0"+m
if d>=0:
for k in range(4-len(n)):
n="0"+n
data=m+n
file.write(data)
file.write("\n")
file.close()
def saveData2(path):
file = open(path+"\\"+"data.dat", "w+")
for i in range(len(dataList[0])):#1
for j in range (len(dataList)):#792
dataStr=dataList[j][i]
a=dataList[j][i].real
b=dataList[j][i].imag
c = int(a)
d = int(b)
e=hex(c&0xffff)
f=hex(d&0xffff)
m=e[2:]
n=f[2:]
if c>=0:
for k in range(4-len(m)):
m="0"+m
if d>=0:
for k in range(4-len(n)):
n="0"+n
data=m+n
file.write(data)
file.write("\n")
file.close()
def saveData3(path):
file = open(path+"\\"+"data.dat", "w+")
print len(dataList[0][0]),len(dataList[0]),len(dataList)
for i in range(len(dataList[0][0])):#
for j in range(len(dataList[0])):#
for k in range (len(dataList)):#
dataStr=dataList[k][j][i]
a=dataList[k][j][i].real
b=dataList[k][j][i].imag
#print a
c = int(a)
d = int(b)
e=hex(c&0xffff)
f=hex(d&0xffff)
m=e[2:]
n=f[2:]
if c>=0:
for k in range(4-len(m)):
m="0"+m
if d>=0:
for k in range(4-len(n)):
n="0"+n
data=m+n
file.write(data)
file.write("\n")
file.close()
if __name__ == "__main__":
path = sys.argv[1]
dataName = sys.argv[2]
data_path = path+"\\"+dataName
print data_path
data = loadmat(data_path)
for i in data:
if i == "__version__" or i == "__header__" or i == "__globals__":
continue
else:
dataList=data[i]
#把列表转换为numpy的数组格式,再根据shape方法,可以得到mat数据的纬度。
L = np.array(dataList)
print L.shape
dataLen = len(L.shape)
#一维的时候,L.shape返回<1L,1L>,所以不能根据len的长度判断
if L.shape[0] == 1 and L.shape[1] == 1:
saveData1(path)
elif dataLen == 2:
saveData2(path)
else dataLen == 3:
saveData3(path)