示例#1
0
 private void MaxScalar(EditMom res, MomList mlist, int i, DateTime t)
 {
     if (res.ValueLess(mlist.MeanI(i)))
     {
         res.CopyValueFrom(mlist, i);
         res.Error = mlist.ErrorI(i);
     }
 }
示例#2
0
        //Агрегация по равномерным сегментам
        //На входе функция с параметрами: текущий результат, список и обрабатываемый номер
        private void Agregate(Action <EditMom, MomList, int, DateTime> fun)
        {
            double seglen = _pars[0].Real, segshift = _pars.Length < 2 ? 0 : _pars[1].Real * seglen;
            var    moms = _initialSignal.OutValue;

            if (moms.Count == 0)
            {
                return;
            }
            var mlist = MFactory.NewList(DataType);
            //Добавляем в список границы сегментов
            var t = Connect.PeriodBegin;
            int i = 0;

            while (t < Connect.PeriodEnd.AddMilliseconds(1))
            {
                while (i < moms.Count && moms.TimeI(i) < t)
                {
                    if (moms.TimeI(i) >= Connect.PeriodBegin && moms.TimeI(i) <= Connect.PeriodEnd)
                    {
                        mlist.AddMom(moms.ToMomI(i));
                    }
                    i++;
                }
                AddUniformMom(moms, mlist, i, t);
                t = t.AddSeconds(seglen);
            }
            if (i < moms.Count && moms.TimeI(i) == Connect.PeriodEnd)
            {
                mlist.AddMom(moms.ToMomI(i));
            }

            t = Connect.PeriodBegin;
            i = 0;
            while (t < Connect.PeriodEnd.AddMilliseconds(-1))
            {
                var me = new EditMom(DataType, t.AddSeconds(segshift));
                if (fun.Method.Name == "AverageScalar")
                {
                    me.Real = 0;
                }
                else
                {
                    me.CopyValueFrom(mlist, i);
                }
                t = t.AddSeconds(seglen);
                while (i < mlist.Count && mlist.TimeI(i) <= t)
                {
                    fun(me, mlist, i++, t);
                }
                if (i > 0 && mlist.TimeI(i - 1) == t)
                {
                    i--;
                }
                MomList.AddMom(me);
            }
        }
示例#3
0
 private void LastScalar(EditMom res, MomList mlist, int i, DateTime t)
 {
     res.CopyValueFrom(mlist, i);
     res.Error = mlist.ErrorI(i);
 }