public PpgPulseDetector(double SamplingRate, int BitsPerSample) { m_SamplingRate = SamplingRate; m_Denoiser = new PpgDenoiser(SamplingRate); m_Normalizer = new PpgDispersionNormalizer(SamplingRate, BitsPerSample); // создаем сборщик статистики // нас интересуют статистические параметры сигнала // за последние 2.2 секунды, предшествующие пику m_SignalStatCollector = new SeriesStatisticsCollector((int)(SamplingRate * this.m_MinStatCollectionPeriod)); m_History = new int[(int)(m_MinStatCollectionPeriod * SamplingRate + 1)]; m_HistoryEmpty = true; }
public PpgPulseDetectorByDerivative(double SamplingRate, int BitsPerSample, bool bEnableDebugMonitor) { DenyLoggerByName(typeof(PpgPulseDetectorByDerivative).ToString()); m_SamplingRate = SamplingRate; DetectorParameters par = DetectorParametersManager.GetParameters(SamplingRate); log.Debug($"Detector parameters used for sampling rate = {SamplingRate} Hz are: {par} "); BY = par.BY; BMY = par.BMY; BYd = par.BYD; BMYd = par.BMYD; BMYd2 = 10; KD1 = BY * BMY * 64; KD2 = BYd * BMYd * 64; m_Normalizer = new PpgDispersionNormalizer(SamplingRate, BitsPerSample); //m_Normalizer.Debug_MonitorEnabled(true); #if ENABLE_DEBUG_MONITOR this.Debug_MonitorEnabled(bEnableDebugMonitor); #else // do not enable, if not enabled in this module #endif // monitor always off //this.Debug_MonitorEnabled(false); // создаем сборщик статистики по сигналу // нас интересуют статистические параметры сигнала // за последние m_MinStatCollectionPeriod предшествующих фронту секунд, // а также история сигнала за последние 2.2 секунды m_Signal_Statistics = new SeriesStatisticsCollector((int)(SamplingRate * this.m_MinStatCollectionPeriod)); // создаем сборщик статистики по производной сигнала // нас интересуют статистические параметры производной сигнала // за последние 2.2 секунды, предшествующие фронту, m_DY_Statistics = new SeriesStatisticsCollector((int)(SamplingRate * this.m_MinStatCollectionPeriod)); // История стабилизированного сигнала this.m_Y = new RingBuffer <int>(this.BY); // История сумм стабилизированного сигнала // (фактически, сглаживание перед дифференцированием) this.m_History_SumY = new RingBuffer <long>(this.BMY); // история стабилизированного сглаженного сигнала // для оценки длительности и высоты последнего фронта this.m_SumY_front_history = new SeriesStatisticsCollector((int)(SamplingRate * 1.0)); // История производной стабилизированного сигнала this.m_DY = new RingBuffer <int>(this.BYd); // История сумм производной стабилизированного сигнала // (фактически, сглаживание перед вторым дифференцированием) this.m_History_SumDY = new RingBuffer <long>(this.BMYd); // История второй производно стабилизированного сигнала this.m_History_D2Y = new RingBuffer <int>(this.BMYd2); }