コード例 #1
0
        public void TestRisingFrontsDetectionOnEmptySeries()
        {
            SeriesStatisticsCollector ssc = new SeriesStatisticsCollector(100);

            NUnit.Framework.Assert.AreEqual(0, ssc.GetLastRisingFrontAmplitude());
            NUnit.Framework.Assert.AreEqual(0, ssc.GetLastRisingFrontDuration());
        }
コード例 #2
0
        public void TestRisingFrontsDetectionOnSingleValueSequence()
        {
            SeriesStatisticsCollector ssc = new SeriesStatisticsCollector(3);

            ssc.AddValue(0);

            NUnit.Framework.Assert.AreEqual(0, ssc.GetLastRisingFrontAmplitude());
            NUnit.Framework.Assert.AreEqual(1, ssc.GetLastRisingFrontDuration());
        }
コード例 #3
0
        public void TestMinMaxFinishedFrontShortHistory()
        {
            FrontDetectionTestSequence seq = this.FinishedFrontSequence;
            SeriesStatisticsCollector  ssc = new SeriesStatisticsCollector(4);

            ssc.AddSequence(seq.sequence);

            NUnit.Framework.Assert.AreEqual(2, ssc.GetMin());
            NUnit.Framework.Assert.AreEqual(4, ssc.GetMax());
        }
コード例 #4
0
        public void TestMinMaxUnFinishedFront()
        {
            FrontDetectionTestSequence seq = this.UnifinishedFrontSequence;
            SeriesStatisticsCollector  ssc = new SeriesStatisticsCollector(seq.sequence.Length);

            ssc.AddSequence(seq.sequence);

            NUnit.Framework.Assert.AreEqual(-2, ssc.GetMin());
            NUnit.Framework.Assert.AreEqual(4, ssc.GetMax());
        }
コード例 #5
0
        public void TestFinishedFront()
        {
            SeriesStatisticsCollector ssc = new SeriesStatisticsCollector(3);

            FrontDetectionTestSequence ts = FinishedFrontSequence;

            ssc.AddSequence(ts.sequence);

            NUnit.Framework.Assert.AreEqual(ts.expected_duration, ssc.GetLastRisingFrontDuration());
            NUnit.Framework.Assert.AreEqual(ts.expected_amplitude, ssc.GetLastRisingFrontAmplitude());
        }
コード例 #6
0
        public void Test_Average_Of_Constant()
        {
            SeriesStatisticsCollector ssc = new SeriesStatisticsCollector(size);

            for (int i = 0; i < size; ++i)
            {
                ssc.AddValue(constantValue);
            }

            ssc.AddValue(constantValue);

            NUnit.Framework.Assert.AreEqual(constantValue, ssc.GetMX(0));
        }
コード例 #7
0
        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;
        }
コード例 #8
0
        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);
        }
コード例 #9
0
 public void TestCreationFailureWhenRequestingTooShortHistorySize()
 {
     Assert.Throws <ArgumentException>(() => { SeriesStatisticsCollector ssc = new SeriesStatisticsCollector(0); });
 }