読者です 読者をやめる 読者になる 読者になる

小型心拍センサ 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

参考:心電図