Struct VmdRedundancy
pub struct VmdRedundancy {
pub center_freq_separation: Vec<((usize, usize), f64)>,
pub energy_ratio: Vec<((usize, usize), f64)>,
pub correlation: Vec<((usize, usize), f64)>,
}Expand description
Per-pair redundancy metrics for diagnosing over-specified K.
VMD with too-large K can either (a) leave excess modes with vanishing
energy, or (b) split a real mode across two adjacent ω_k (both halves
keep meaningful energy). A single energy-based test only catches case (a);
the three metrics here jointly catch both.
Pairs are enumerated (i, j) with i < j, in the same order across all
three vectors.
Fields§
§center_freq_separation: Vec<((usize, usize), f64)>|ω_i − ω_j| for each pair, in normalized frequency [0, 0.5].
energy_ratio: Vec<((usize, usize), f64)>min(E_i, E_j) / max(E_i, E_j) ∈ [0, 1]. Near 1 indicates a
mode-splitting failure (two roughly equal modes); near 0 indicates
excess modes (case a).
correlation: Vec<((usize, usize), f64)>|⟨u_i, u_j⟩| / (‖u_i‖ · ‖u_j‖) ∈ [0, 1]. Wang et al. and Liu et al.
both treat high inter-mode correlation as the most reliable
redundancy signal — band-limited modes around distinct frequencies
are nearly orthogonal in time domain.
Implementations§
§impl VmdRedundancy
impl VmdRedundancy
Trait Implementations§
§impl Clone for VmdRedundancy
impl Clone for VmdRedundancy
§fn clone(&self) -> VmdRedundancy
fn clone(&self) -> VmdRedundancy
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for VmdRedundancy
impl RefUnwindSafe for VmdRedundancy
impl Send for VmdRedundancy
impl Sync for VmdRedundancy
impl Unpin for VmdRedundancy
impl UnwindSafe for VmdRedundancy
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.