medical_SDK/include/indicator_cal.h

36 lines
1.8 KiB
C
Raw Normal View History

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