美文网首页
ECG 心率计算

ECG 心率计算

作者: xiaolei123 | 来源:发表于2021-03-17 19:09 被阅读0次
import java.util.LinkedList;
import java.util.List;

public class EcgUtils
{
    /**
     * 获取频率
     *
     * @param data       所有的数据 20秒的数据
     * @param hz         采集的频率
     * @param max_num    波峰的代表值
     * @param min_num    波谷的代表值
     * @param check_time 一次计算的时间,会根据这个数据进行切割 [1-5秒的数据][2-6秒的数据][3-7秒的数据]
     * @param onResult   计算结果的回调
     * @return
     */
    public static void getRateCount(int[] data, int hz, int max_num, int min_num, int check_time, OnResult onResult)
    {
        if (data.length < hz * check_time) throw new RuntimeException("长度不足支持计算");

        List<int[]> datas = new LinkedList<>();

        for (int i = 0; i < data.length; i++)
        {
            int[] p_data = new int[hz * check_time];
            for (int j = 0; j < p_data.length; j++)
            {
                if (i + j < data.length)
                    p_data[j] = data[i + j];
                else
                    p_data[j] = 0;
            }
            datas.add(p_data);
            if (i + hz < data.length)
                i += hz;
            else
                i = data.length - 1;
        }
        for (int[] p_data : datas)
        {
            int first_index = -1;
            int last_index = p_data.length;
            int cha = 0;
            int count = 0;
            boolean findNext = true;
            for (int i = 0; i < p_data.length; i++)
            {
                int num = p_data[i];
                // 一次
                if (num >= max_num && findNext)
                {
                    count++;
                    findNext = false;

                    if (first_index == -1)
                    {
                        first_index = i;
                    }
                    last_index = i;
                } else if (num <= min_num && !findNext)
                {
                    findNext = true;
                }
            }

            if (onResult != null)
            {
                if (last_index - first_index == 0)
                {
                    cha = 1;
                } else
                {
                    cha = last_index - first_index;
                }
                System.out.print("hz=" + hz + " ");
                System.out.print("check_time=" + check_time + " ");
                System.out.print("count=" + count + " ");
                System.out.print("cha=" + cha + " ");
                onResult.onResult((60 * hz) * (count - 1) / cha);
            }
        }
    }

    interface OnResult
    {
    // 计算心率的结果
        void onResult(int value);
    }
}

559259945 加群交流

相关文章

  • ECG 心率计算

    559259945 加群交流

  • 心率模块(ECG)maxim方案小结

    最近有个项目要用心率模块,之前被买心率模块坑过几次,测不准测不出来什么的各种问题 然后发现现在很多手环啊,手机都带...

  • 科学运动清单

    一,运动适宜心率 适合的心率(依据卡氏公式计算) 心肺训练心率 =(220 − 年龄−静态心率)×(55% ~ 6...

  • 最高心率和基础心率

    跑步者首先要知道自己的最高心率和基础心率(即静息心率)。 (一)最高心率的测定 最高心率的粗略计算方法是:220-...

  • 心脏如何锻炼?手把手教你心率训练方法

    心脏如何锻炼?手把手教你心率训练方法 智能心率手环在监测心率时,会自动计算您的最大心率,以及您心率值所对应的训练阶...

  • 跑步的6个区间

    一、最大心率和静态心率 最大心率的计算公式是“220-年龄”,而静态心率可以参照我之前的文章分享的方法进行测量。h...

  • 合理跑步心里区间

    在得到上看到计算合适跑步心理区间的公式: 1. 测量静息心率 (比如说,睡醒站立3分钟后的心率) 2. 轻松跑心率...

  • 科学运动

    最近跑步心率或高或低,也不知道多少合适。今天查了一下关于最大心率的计算。220减去咱们的年龄等于我们的最大心率极限...

  • 跑步要点

    一,心率 糖值转换点,心率控制的好,只消耗脂肪不消耗糖。 循序渐进。 根据心跳计算跑量。 二,跑步姿势: 错误姿势...

  • ECG技术原理和PPG技术原理对比

    本文介绍了心电图 (ECG) 与光电容积图 (PPG) 的基本工作原理,讨论了ECG与PPG生理信号的量测,以及提...

网友评论

      本文标题:ECG 心率计算

      本文链接:https://www.haomeiwen.com/subject/ogiecltx.html