April 24(Tue), 2012
小型心拍センサ WHS-1のメモリデータからCVRRを計算するRubyプログラム
Ruby | |
小型心拍センサ WHS-1のメモリデータには、計測時刻とRR間隔、3軸加速度の数値が記録されています。そのメモリデータからCVRR (R-R間隔変動係数)を算出するプログラムを作成しました。
CVRRは以下の計算式で算出されます。
CVRR = RR間隔標準偏差 / RR間隔平均 * 100
100拍で計算するのが一般的だそうで、そのように計算するようにしました。
- cvrr.rb
def calculate(array) sum = 0 array.each do |value| sum += value end avg = sum.to_f / array.size sum = 0 array.each do |value| sum += (value - avg) ** 2 end sd = Math::sqrt(sum / array.size) cvrr = sd / avg * 100 p cvrr end open(ARGV[0]) do |file| 4.times do file.gets end array = Array.new while line = file.gets columns = line.split(',') rr = columns[1].to_i array.push(rr) if array.size == 100 calculate(array) array.clear end end end
引数にメモリデータのファイル名を指定して実行します。
$ ruby cvrr.rb data.csv 8.30259990444616 1.65177169481792 1.20174985021913 8.52417184151674 17.195433170675 11.2600762444967 11.3273397827425
参考:心電図
コメントを書く


