示例#1
0
文件: Smoothers.cs 项目: vego1mar/PI
        private static double GetNadarayaWatsonMiddlePoint(IList <double> source, NadarayaWatsonVariant variant)
        {
            switch (variant)
            {
            case NadarayaWatsonVariant.Subsitution:
                return((Averages.Central(source, 50).Value + Averages.Median(source).Value) / 2.0);

            case NadarayaWatsonVariant.NoiseCoursing:
                return((Averages.Maximum(source).Value - Averages.Minimum(source).Value) / 2.0);
            }

            return(double.NaN);
        }
示例#2
0
文件: Smoothers.cs 项目: vego1mar/PI
        public static IList <double> NadarayaWatson(IList <IList <double> > orderedSet, NadarayaWatsonVariant variant, KernelType kernelType, double kernelSize)
        {
            if (orderedSet == null || orderedSet.Count == 0)
            {
                return(new List <double>().AsReadOnly());
            }

            KernelsCommander kernel      = new KernelsCommander(kernelType);
            IList <double>   set         = new List <double>();
            double           numerator   = 0.0;
            double           denominator = 0.0;
            double           currentWeight;

            for (int x = 0; x < orderedSet.Count; x++)
            {
                for (int i = 0; i < orderedSet.Count; i++)
                {
                    currentWeight = kernel.Execute(orderedSet[x], orderedSet[i], kernelSize);
                    numerator    += currentWeight * GetNadarayaWatsonMiddlePoint(orderedSet[i], variant);
                    denominator  += currentWeight;
                }

                set.Add(numerator / denominator);
                numerator   = 0.0;
                denominator = 0.0;
            }

            return(set);
        }