Struct EMDConfig
#[non_exhaustive]pub struct EMDConfig {
pub numerical_tolerance: f64,
pub max_imfs: usize,
pub max_sifting_iterations: usize,
pub stopping_threshold: f64,
pub min_extrema: usize,
pub use_s_criterion: bool,
pub s_number: usize,
pub end_effect_strategy: EndEffectStrategy,
}Expand description
Configuration for EMD decomposition
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.numerical_tolerance: f64Numerical tolerance for singularity detection in cubic spline interpolation
max_imfs: usizeMaximum number of IMFs to extract
max_sifting_iterations: usizeMaximum iterations for sifting process
stopping_threshold: f64Stopping criterion threshold
min_extrema: usizeMinimum number of extrema to continue decomposition
use_s_criterion: boolUse S-number stopping criterion
s_number: usizeS-number threshold (typically 4-5)
end_effect_strategy: EndEffectStrategyStrategy used to reduce envelope boundary artifacts.
Implementations§
§impl EMDConfig
impl EMDConfig
pub fn for_finance() -> Self
pub fn for_finance() -> Self
Create configuration optimized for financial data
pub fn for_hft() -> Self
pub fn for_hft() -> Self
Create configuration for high-frequency trading data
pub fn with_numerical_tolerance(self, numerical_tolerance: f64) -> Self
pub fn with_numerical_tolerance(self, numerical_tolerance: f64) -> Self
Override the singularity-detection tolerance used by cubic spline interpolation during envelope construction.
pub fn with_max_imfs(self, max_imfs: usize) -> Self
pub fn with_max_imfs(self, max_imfs: usize) -> Self
Set the maximum number of IMFs to extract before terminating.
pub fn with_max_sifting_iterations(self, max_sifting_iterations: usize) -> Self
pub fn with_max_sifting_iterations(self, max_sifting_iterations: usize) -> Self
Set the maximum number of sifting iterations per IMF.
pub fn with_stopping_threshold(self, stopping_threshold: f64) -> Self
pub fn with_stopping_threshold(self, stopping_threshold: f64) -> Self
Set the Cauchy-style sifting stopping threshold.
pub fn with_min_extrema(self, min_extrema: usize) -> Self
pub fn with_min_extrema(self, min_extrema: usize) -> Self
Set the minimum number of extrema required to continue decomposition.
pub fn with_use_s_criterion(self, use_s_criterion: bool) -> Self
pub fn with_use_s_criterion(self, use_s_criterion: bool) -> Self
Toggle the S-number stopping criterion (Huang et al. 1998).
pub fn with_s_number(self, s_number: usize) -> Self
pub fn with_s_number(self, s_number: usize) -> Self
Set the S-number threshold (typically 4–5).
pub fn with_end_effect_strategy(
self,
end_effect_strategy: EndEffectStrategy,
) -> Self
pub fn with_end_effect_strategy( self, end_effect_strategy: EndEffectStrategy, ) -> Self
Choose the end-effect mitigation strategy used during envelope construction.
Trait Implementations§
§impl Default for EMDConfig
impl Default for EMDConfig
§fn default() -> Self
fn default() -> Self
Default configuration.
2.0.0 behavior change. end_effect_strategy defaults to
EndEffectStrategy::MirrorExtrema{ num_extrema: 3 } (Rilling,
Flandrin & Gonçalves 2003), replacing the pre-2.0.0 single-extremum
linear-slope extrapolation. Any decomposition whose envelope
construction touches ≥ 2 extrema produces materially different IMF
sample values at the boundary; the ‖x − Σ IMFₖ − r‖∞ < 1e-10
reconstruction property holds for both strategies, but pipelines
that pinned specific IMF values must re-validate.
To preserve the pre-2.0.0 behavior bit-for-bit:
use ferro_wave::transform::{EMDConfig, EndEffectStrategy};
let config = EMDConfig::default()
.with_end_effect_strategy(EndEffectStrategy::LinearSlope);Auto Trait Implementations§
impl Freeze for EMDConfig
impl RefUnwindSafe for EMDConfig
impl Send for EMDConfig
impl Sync for EMDConfig
impl Unpin for EMDConfig
impl UnwindSafe for EMDConfig
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
clone_to_uninit)§impl<T> IntoEither for T
impl<T> IntoEither for T
§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.