Struct CEEMDAN
#[non_exhaustive]pub struct CEEMDAN {
pub ensemble_size: usize,
pub noise_amplitude: f64,
pub emd_config: EMDConfig,
pub random_seed: Option<u64>,
pub variant: CeemdanVariant,
}Expand description
Complete Ensemble EMD with Adaptive Noise.
See the module docs for the algorithm and variant comparison.
§Determinism contract
With a fixed CEEMDAN::random_seed the result is bitwise-identical
across runs and across RAYON_NUM_THREADS. The ensemble loop runs in
parallel via rayon, but the per-member contributions are reduced in
member-index order, so the floating-point sum order is independent of
worker count — matching the byte stream produced by the sequential
reference implementation.
§EMDResult::iterations semantics
For CEEMDAN, iterations[k] is the number of ensemble members at stage
k whose noise-augmented residue produced a real envelope (Improved) or
real first IMF (Standard) — not the EMD sifting count it carries for
plain emd(). All ensemble_size realizations always contribute to the
per-stage average; members whose augmented residue lost too many extrema
fall back to the M(x) = x limit case rather than being dropped, so the
ensemble denominator stays fixed and the average is unbiased. Values
strictly below ensemble_size indicate how many realizations took that
fallback at the stage; equal to ensemble_size means every realization
had a real envelope / first IMF.
§Field stability
CEEMDAN is #[non_exhaustive]. Construct via CEEMDAN::default /
CEEMDAN::for_finance and customize with the with_* builders; new
fields can land without source-breakage.
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.ensemble_size: usizeNumber of noise realizations averaged at each stage.
noise_amplitude: f64Noise amplitude ε (as a fraction of the residue standard deviation at
each stage). βₖ = noise_amplitude · σ(rₖ) in the literature.
emd_config: EMDConfigShared EMD configuration. Controls sifting tolerance, end-effect strategy, S-criterion, and the maximum number of IMFs to extract.
random_seed: Option<u64>Optional seed for the noise RNG. Some(seed) makes the result
bitwise-reproducible; None derives a fresh seed from the system clock.
variant: CeemdanVariantWhich CEEMDAN formulation to apply.
Implementations§
§impl CEEMDAN
impl CEEMDAN
pub fn for_finance() -> Self
pub fn for_finance() -> Self
CEEMDAN preset tuned for financial time series — smaller ensemble, lower noise amplitude, and the finance EMD config.
pub fn with_variant(self, variant: CeemdanVariant) -> Self
pub fn with_variant(self, variant: CeemdanVariant) -> Self
Select the CEEMDAN variant (defaults to CeemdanVariant::Improved).
pub fn with_ensemble_size(self, ensemble_size: usize) -> Self
pub fn with_ensemble_size(self, ensemble_size: usize) -> Self
Set the number of noise realizations averaged at each stage.
pub fn with_noise_amplitude(self, noise_amplitude: f64) -> Self
pub fn with_noise_amplitude(self, noise_amplitude: f64) -> Self
Set the noise amplitude ε (as a fraction of the residue standard
deviation at each stage). Must be non-negative and finite; validated in
CEEMDAN::decompose.
pub fn with_emd_config(self, emd_config: EMDConfig) -> Self
pub fn with_emd_config(self, emd_config: EMDConfig) -> Self
Replace the embedded EMD configuration. The CEEMDAN sift / local-mean operator and the per-realization noise decomposition all use this config.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for CEEMDAN
impl RefUnwindSafe for CEEMDAN
impl Send for CEEMDAN
impl Sync for CEEMDAN
impl Unpin for CEEMDAN
impl UnwindSafe for CEEMDAN
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.