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