/// <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; }
/// <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; }