状況
・動体にセンサをつけて信号を計測して、その信号のうちしっかりと動いている信号を切り出して使いたい
・データの量がそこそこ多く、手作業で使えるデータと使えないデータをクリップしていくのは流石に無理
・利用先として、pythonでニューラルネットにぶちこむ
加速度センサから得られた3軸の時系列信号を処理していて、計測を一度始めたらしばらくそのまま計測して、あとでいらない部分を削る、というやりかたにしたため、そこでの工夫点をまとめる。
使うpython モジュール >>numpy
データは[軸, 各軸の加速度値]
例:1k Hzで10秒計測した場合の配列のシェイプは[3,10000]となる。
今回、1kHzサンプリングだった。1.5秒ごとにデータをカットして小分けにした
この1.5秒、つまり各軸で1500点のうち1/3が動いてないと判断された場合はこの1.5秒は捨てるようにしたかった。
データを使うか使わないかは置いといて、ざっとやり方をメモ
今回は、3軸のベクトルなので、ベクトルのスカラ値が変化がないと、動いてない判定を出すようにした。
(メモのため、[3,1500]の形の配列を”./signal.npy”に保存している前提で)
import numpy as np
dl=1500#data length データの長さ
signal=np.load(”./signal.npy”)
sig=np.sqrt(signal**2)
flags=0
for k in range(3):
ff=np.var(np.sum(sig[:,int(dl/3)k:int(dl/3)(k+1)],axis=0))
if ff<10:
flags+=1
if flags >= 1:
print(“データが使えない”,class_name,i)
コメント