Struct EWTResult
pub struct EWTResult {
pub components: Vec<Vec<f64>>,
pub coefficients: Vec<Vec<f64>>,
pub boundaries: Vec<f64>,
pub gamma: f64,
pub filter_responses: Vec<Vec<f64>>,
}Expand description
Result of an ewt decomposition.
EWT exposes the bands in two complementary forms because the issue
acceptance criteria (exact Σ reconstruction and Parseval) cannot
hold simultaneously on a single set of smooth-filter outputs. Use
Self::components when you want a sum-to-signal decomposition, and
Self::coefficients when you need per-band energy that adds up to
the signal energy. See the module-level doc for the math.
Fields§
§components: Vec<Vec<f64>>N + 1 reconstructed bandpass modes, where N = boundaries.len()
is the number of detected boundaries. components[k] = IFFT(|Ĥ_k|² · X̂) for k = 0..=N. By construction Σ components[k] ≡ x to
within FFT round-off (Meyer energy partition). Per-band energies do
not sum to ‖x‖² — use Self::coefficients for that.
coefficients: Vec<Vec<f64>>N + 1 canonical EWT analysis coefficients (Gilles 2013
W_f(k, t)), one per band: coefficients[k] = IFFT(Ĥ_k · X̂).
These satisfy strict Parseval Σ_k ‖coefficients_k‖² = ‖x‖² and
are the right quantity for per-band energy accounting,
instantaneous-frequency tracking, or feeding into other DSP that
expects wavelet coefficients. They do not sum to x — see
Self::components for that.
boundaries: Vec<f64>Detected boundary frequencies in ascending order, all strictly
inside (0, ω_max) where ω_max = 2π · (n / 2) / n is the
highest representable DFT bin (= π for even n,
π · (n − 1) / n for odd n). boundaries.len() == components.len() − 1.
gamma: f64Resolved Meyer transition-width parameter — the value
GammaStrategy::Auto computed, or the GammaStrategy::Fixed
value the caller supplied. Diagnostic only; not used by iewt.
filter_responses: Vec<Vec<f64>>Per-band Meyer responses |Ĥ_k(ω)| on the half-spectrum grid
ω_k = 2π · k / signal_len. The energy partition
Σ |Ĥ_k(ω)|² ≡ 1 holds on this grid. Useful for plotting the
filter bank; not used by iewt.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for EWTResult
impl RefUnwindSafe for EWTResult
impl Send for EWTResult
impl Sync for EWTResult
impl Unpin for EWTResult
impl UnwindSafe for EWTResult
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.