diff --git a/EcomAnalysis/Form1.cs b/EcomAnalysis/Form1.cs index a7314e8..63f88ad 100644 --- a/EcomAnalysis/Form1.cs +++ b/EcomAnalysis/Form1.cs @@ -56,6 +56,13 @@ /// 解析 /// private void Analyze() { + // 定数 + const double RR2HB = 60000.0; // RR間隔(ms)から心拍数への変換係数 + const int HB_MIN = 20; // 心拍数の変動範囲の最小値 + const int HB_MAX = 200; // 心拍数の変動範囲の最大値 + const int RR_MIN = (int)RR2HB / HB_MAX; // RR間隔の変動範囲の最小値 + const int RR_MAX = (int)RR2HB / HB_MIN; // RR間隔の変動範囲の最大値 + // FB回数 var fbCounts = new int[5]; var fbPts = new int[5]; @@ -80,22 +87,27 @@ dat.OrderBy(s => s.SceneTime).Select(s=>s.ContactTime).Last(); scDat.Latency = dat.Where(c => c.Feedback > 0).Count()==0 ? 0 : dat.Where(c => c.Feedback > 0).Select(s => s.SceneTime).First(); - scDat.MeanRR = 60000.0 / dat.Select(s => s.RR).Average(); + var validRR = dat.Where(s => s.RR >= RR_MIN && s.RR <= RR_MAX); + scDat.Beat = validRR.Count() > 0 ? RR2HB / validRR.Select(s => s.RR).Average() : 0; var items = new string[] { $"{scDat.SceneNo}", $"{scDat.FBCount} 回", $"{scDat.ECTime:0.00} 秒", $"{scDat.Latency:0.00} 秒", - $"{scDat.MeanRR:0.00} bpm" }; + $"{scDat.Beat:0.00} bpm" }; listView1.Items.Add(new ListViewItem(items)); allData.Add(scDat); } + var validBeat = allData.Where(s => s.Beat > 0); + var meanBeat = validBeat.Count() > 0 ? validBeat.Select(s => s.Beat).Average() : 0; + var validLatency = allData.Where(s => s.FBCount > 0); + var meanLatency = validLatency.Count() > 0 ? validLatency.Select(s => s.Latency).Average() : 0; listView1.Items.Add(new ListViewItem(new string[] { "平均", $"{allData.Select(s=>s.FBCount).Average():0.00} 回", $"{allData.Select(s=>s.ECTime).Average():0.00} 秒", - $"{allData.Select(s=>s.Latency).Average():0.00} 秒", - $"{allData.Select(s=>s.MeanRR).Average():0.00} bpm" })); + $"{meanLatency:0.00} 秒", + $"{meanBeat:0.00} bpm" })); } // 表示 diff --git a/EcomAnalysis/LogData.cs b/EcomAnalysis/LogData.cs index 7a8d0f4..f9d3e0f 100644 --- a/EcomAnalysis/LogData.cs +++ b/EcomAnalysis/LogData.cs @@ -33,6 +33,6 @@ public int FBCount; public double ECTime; public double Latency; - public double MeanRR; + public double Beat; } }