Beispiel #1
0
        /// <summary>
        /// Создаем критерий останова
        /// </summary>
        /// <param name="stopCondition">перечисление критерий останова</param>
        /// <returns></returns>
        public static IStopCondition StopCondition(EnumStopCondition stopCondition = EnumStopCondition.КоличествоИтераций)
        {
            IStopCondition _StopCondition;
            //Создаем метод с заданным критерием останова
            switch (stopCondition)
            {
                case EnumStopCondition.КоличествоЭкстремумов:
                    _StopCondition = new StopCondition_1()
                    {
                        StopConditionType = (int)EnumStopCondition.КоличествоЭкстремумов,
                        //Задаем максимальное количество внешних итераций (компонентов сигнала)
                        //I = 8;
                        J = 8
                    };
                    break;
                case EnumStopCondition.КоличествоИтерацийИлиЭкстремумов:
                    _StopCondition = new StopCondition_2()
                    {
                        StopConditionType = (int)EnumStopCondition.КоличествоИтерацийИлиЭкстремумов,
                        //Задаем максимальное количество внешних итераций (компонентов сигнала)
                        //I = 8;
                        J = 8
                    };
                    break;
                default:
                    //EnumStopCondition.КоличествоИтераций:
                    _StopCondition = new StopCondition()
                    {
                        StopConditionType = (int)EnumStopCondition.КоличествоИтераций,
                        //Задаем максимальное количество внешних итераций (компонентов сигнала)
                        //I = 8;
                        J = 8
                    };
                    break;
            }

            return _StopCondition;
        }
Beispiel #2
0
        /// <summary>
        /// Создать новый объект EMD
        /// </summary>
        /// <param name="interpolation"></param>
        /// <param name="stopCondition"></param>
        /// <param name="stopConditionSeparate"></param>
        /// <returns></returns>
        public EmDecomposition EmdFactoryMethod(EnumInterpolation interpolation = EnumInterpolation.КубическийСплайн, 
                                                EnumStopCondition stopCondition = EnumStopCondition.КоличествоИтерацийИлиЭкстремумов, 
                                                EnumStopConditionSeparate stopConditionSeparate = EnumStopConditionSeparate.КоличествоИтерацийИлиДостигнутаТочность)
        {
            EmDecomposition emd;
            Func<IList<double>, IList<double>, IList<double>, IList<double>> _Interpolation;
            IStopCondition _StopConditionSeparate;
            IStopCondition _StopCondition;

            //Создаем метод интерполяции
            switch (interpolation)
            {
                case EnumInterpolation.КубическийСплайн:
                    _Interpolation = MathHelper.Interpolation_3;
                    break;
                default:
                    //throw new NotImplementedException();
                    _Interpolation = MathHelper.Interpolation_3;
                    break;
            }

            // Создаем критерий останова
            _StopCondition = HhtCreator.StopCondition(stopCondition);
            // Создаем критерий останова для процесса отсеивания
            _StopConditionSeparate = HhtCreator.StopConditionSeparate(stopConditionSeparate);

            //emd = new EmdImplementationClass1(Interpolation, StopCriterion, StopSiftCriterion);
            emd = new EmDecomposition_2()
            {
                InterpolationMethod = _Interpolation,
                StopConditionSeparate = _StopConditionSeparate,
                StopCondition = _StopCondition
            };

            return emd;
        }