使用matlab获取Acce和Gyro的数据,单独提取到一个文件中
在matlab中运行官方发布的数据处理程序
运行完成后会生成许多图像,同时会生成一个mat文件,包含官方数据中的各个传感器数据
点击这个mat文件,工作区就会出现这些数据,使用如下命令即可提取到相应的txt文件中
>> load('T01_01.mat')
>> save Acce.txt Acce -ascii
>> save Gyro.txt Gyro -ascii
由于提取到的是文本文件,可以用python读取文件的方法把里面的数据提取到二维数组中,因为我这里还要对数据进行预处理,所以先提取成csv文件格式,方便后续的函数处理
import pandas as pd
data = open(r'Gyro.txt')
res = []
for i in data:
d = [x for x in i.strip().replace(' ', ' ').replace(' ', ' ').split(' ')]
res.append(d)
a = list(res)
save = pd.DataFrame(index=None, data=list(res), dtype="str") # columns列名,index索引名,data数据
fh = open(r'Gyro.csv', 'w+')
save.to_csv(fh, date_format="string")
data.close()
fh.close()
重写一下读取文件函数,因为这里只需要x,y,z的三轴加速度
def load_ipin_dataset(acce_data_filename, gyro_data_filename):
acce_data = pd.read_csv(acce_data_filename).values
gyro_data = pd.read_csv(gyro_data_filename).values
acce_data = acce_data[11925:24000] # 表示从第一个landmark开始
gyro_data = gyro_data[11925:24000]
acc_data = acce_data[:, 3:6]
gyro_data = gyro_data[:, 3:6]
return acc_data, gyro_data
需要对数据进行预处理一下,变成一个三维数据,设置窗口和步长
def load_ipindataset_6d(gyro_data, acc_data, window_size=200, stride=10):
x_gyro = []
x_acc = []
for idx in range(0, gyro_data.shape[0] - window_size - 1, stride):
# x.append(gyro_acc_data[idx + 1 : idx + 1 + window_size, :])
x_gyro.append(gyro_data[idx + 1: idx + 1 + window_size, :])
x_acc.append(acc_data[idx + 1: idx + 1 + window_size, :])
x_gyro = np.reshape(x_gyro, (len(x_gyro), x_gyro[0].shape[0], x_gyro[0].shape[1]))
x_acc = np.reshape(x_acc, (len(x_acc), x_acc[0].shape[0], x_acc[0].shape[1]))
return [x_gyro, x_acc]
记录一下相关的数据格式
x_gyro.shape | (2997, 256, 3) |
---|---|
x_acc.shape | (2997, 256, 3) |
y_delta_p | (2997, 3) |
y_delta_q | (2997, 4) |