AndroidWearの加速度センサーで取得した加速度をグラフ表示します。 加速度は時系列データです。 CSVファイルとして保存した加速度データを用い、読み込みます。 CSVは「hh:mm:ssssss,X-axis,Y-axis,Z-axis」というフォーマットにしました。
final DateFormat df = new SimpleDateFormat("HH:mm:ssSSS");
final Date date = new Date(System.currentTimeMillis());
String SEND_DATA = df.format(date)+","+x+","+y+","+z+","+sum+"\n";
CSVファイルの一部
13:30:08167,-0.016460137,0.24540567,9.58803
13:30:08210,-0.016460137,0.24540567,9.58803
13:30:08254,-0.02124854,0.20949265,9.621549
13:30:08272,-0.014065935,0.20470424,9.568876
13:30:08316,-0.009277532,0.25498247,9.657461
13:30:08353,-0.057161566,0.23343466,9.532963
13:30:08393,-0.042796355,0.23582886,9.674221
13:30:08433,-0.03561375,0.21906945,9.568876
13:30:08476,-0.028431145,0.25737667,9.607183
13:30:08518,-0.028431145,0.25737667,9.607183
13:30:08553,-0.07152677,0.19752164,9.621549
13:30:08593,-0.047584757,0.2669535,9.509021
13:30:08633,-0.016460137,0.22146365,9.645491
時間フォーマットを設定する.
加速度センサーの値をグラフにしたいため、Y軸は加速度,X軸は時間になります。 gnuplotはそのままでは時間データを扱えないため、gnuplotにX軸を時間として扱う設定をします。
#時間フォーマットの設定
set xdata time
set timefmt "%H:%M:%s"
set format x "%H:%M:%s"
#秒のときは%S,エポックミリ秒のときは%sです.
扱える日付フォーマットはリファレンスを参考にしてください。
CSVフォーマットを設定する
今度はCSV形式のファイルが読み込めるように設定します。
#csvフォーマットの設定
set datafile separator ","
カンマ<”,“>以外にもタブ<“\t”>や任意の文字で区切ることができます。 ちなみにデフォルトはスペース<” “>区切りが設定されているようです。
プロットする
これで加速度データが入ったCSVファイルをグラフにプロットする準備ができました。
file_name="sensor.csv"
plot file_name using 1:2 with linespoints, file_name using 1:3 with linespoints, file_name using 1:4 with linespoints;
実行すると加速度センサーのグラフが表示されました。
スマートウォッチを装着した状態で歩行したところ、綺麗に歩行ステップが検出できていることがわかります。(4歩分) 実際に加速度を使うときは高周波数域を取り除くローパスフィルターを用いることがります。
参考にしたサイト
[gnuplot] エポックミリ秒を軸にしてグラフを書く|ihirokyの日記 gnuplot でデータをプロットしてみるNPM LOG Gnuplot公式リファレンス