2025-08-14 11:16:24 +08:00
|
|
|
#ifndef _INDICATOR_CAL_H
|
|
|
|
|
#define _INDICATOR_CAL_H
|
|
|
|
|
#include "headfile.h"
|
|
|
|
|
class MetricsCalculator
|
|
|
|
|
{
|
|
|
|
|
public:
|
2025-08-25 10:53:22 +08:00
|
|
|
// ECG相关指标
|
2025-08-14 11:16:24 +08:00
|
|
|
float calculate_heart_rate_ecg(const SensorData& ecg_signal, float sample_rate);
|
|
|
|
|
float calculate_t_wave_amplitude(const std::vector<float>& ecg_signal);
|
2025-08-25 10:53:22 +08:00
|
|
|
float calculate_qrs_width(const std::vector<float>& ecg_signal, float sample_rate);
|
|
|
|
|
float calculate_st_offset(const std::vector<float>& ecg_signal, float sample_rate);
|
|
|
|
|
|
|
|
|
|
// PPG相关指标
|
2025-08-14 11:16:24 +08:00
|
|
|
float calculate_heart_rate_ppg(const std::vector<float>& ppg_signal, float sample_rate);
|
|
|
|
|
float calculate_spo2(const SensorData& ppg_data);
|
2025-08-25 10:53:22 +08:00
|
|
|
float calculate_perfusion_index(const SensorData& ppg_data);
|
2025-08-14 11:16:24 +08:00
|
|
|
float calculate_pulse_width(const std::vector<float>& ppg_signal);
|
|
|
|
|
float calculate_amplitude_ratio(const SensorData& ppg_data);
|
2025-08-25 10:53:22 +08:00
|
|
|
|
|
|
|
|
// HRV相关指标
|
2025-08-14 11:16:24 +08:00
|
|
|
float calculate_sdnn(const std::vector<float>& rr_intervals);
|
2025-08-25 10:53:22 +08:00
|
|
|
float calculate_rmssd(const std::vector<float>& rr_intervals);
|
|
|
|
|
float calculate_pnn50(const std::vector<float>& rr_intervals);
|
|
|
|
|
float calculate_triangular_index(const std::vector<float>& rr_intervals);
|
|
|
|
|
|
|
|
|
|
// 信号处理
|
|
|
|
|
std::vector<float> detect_r_peaks(const std::vector<float>& ecg_signal, float sample_rate);
|
2025-08-14 11:16:24 +08:00
|
|
|
std::vector<float> detect_pulse_peaks(const std::vector<float>& ppg_signal, float sample_rate);
|
2025-08-25 10:53:22 +08:00
|
|
|
float calculate_signal_quality(const std::vector<float>& signal);
|
|
|
|
|
|
|
|
|
|
// 综合指标计算
|
|
|
|
|
std::map<std::string, float> calculate_all_ecg_metrics(const SensorData& ecg_data, float sample_rate);
|
|
|
|
|
std::map<std::string, float> calculate_all_ppg_metrics(const SensorData& ppg_data, float sample_rate);
|
|
|
|
|
std::map<std::string, float> calculate_all_hrv_metrics(const std::vector<float>& rr_intervals);
|
2025-08-14 11:16:24 +08:00
|
|
|
};
|
|
|
|
|
#endif
|