pythonで信号処理 不要な信号の自動的除去

状況

・動体にセンサをつけて信号を計測して、その信号のうちしっかりと動いている信号を切り出して使いたい

・データの量がそこそこ多く、手作業で使えるデータと使えないデータをクリップしていくのは流石に無理

・利用先として、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)

GPULinux UbuntunumpytensorflowUbunut18.04機械学習深層学習
スポンサーリンク
Toufuをフォローする

コメント

タイトルとURLをコピーしました