Struct HilbertSpectrum
#[non_exhaustive]pub struct HilbertSpectrum {
pub density: Vec<Vec<f64>>,
pub frequencies: Vec<f64>,
pub sample_rate: f64,
}Expand description
Joint time-frequency-energy density h(t, ω) built from an
EMDResult’s IMFs.
Indexing: density[t][k] is the summed squared Hilbert amplitude of every
IMF whose instantaneous frequency lies in bin k at sample t. The bin
centers are in Self::frequencies.
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.density: Vec<Vec<f64>>density[t][k] — energy in freq bin k at sample t.
frequencies: Vec<f64>Frequency bin centers in Hz, length num_freq_bins.
sample_rate: f64Sample rate that the original signal was measured at, in Hz.
Implementations§
§impl HilbertSpectrum
impl HilbertSpectrum
pub fn marginal(&self) -> Vec<f64>
pub fn marginal(&self) -> Vec<f64>
Marginal Hilbert spectrum h(ω) = Σ_t h(t, ω). Length =
frequencies.len(). Huang 1998 §VI.
pub fn instantaneous_energy(&self) -> Vec<f64>
pub fn instantaneous_energy(&self) -> Vec<f64>
Instantaneous energy density E(t) = Σ_k h(t, ω_k). Length =
density.len().
pub fn degree_of_stationarity(&self) -> Vec<f64>
pub fn degree_of_stationarity(&self) -> Vec<f64>
Degree of stationarity DoS(ω) = (1/T) Σ_t (1 − h(t, ω) / mean_t h(t, ω))²
per Huang 1998 Eq 8.6. Length = frequencies.len().
A pure tone gives DoS ≈ 0 at the bin where its energy lives; a chirp
or FM signal gives much larger values across every bin it visits.
Frequency bins that are empty for the whole record return 0.0 rather
than NaN.
Discretization caveat for whole-signal comparisons. A bin that
receives energy at only a single time sample (an edge artifact, or a
chirp’s brief visit) yields the extreme value DoS = N − 1 — so the
raw peak DoS does not separate stationary from non-stationary inputs
on its own. To compare whole signals, weight by the marginal:
<DoS> = (Σ_ω marginal(ω) · DoS(ω)) / Σ_ω marginal(ω)which suppresses the sparse outliers and recovers Huang 1998 §VI’s qualitative ordering.
Trait Implementations§
§impl Clone for HilbertSpectrum
impl Clone for HilbertSpectrum
§fn clone(&self) -> HilbertSpectrum
fn clone(&self) -> HilbertSpectrum
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 HilbertSpectrum
impl RefUnwindSafe for HilbertSpectrum
impl Send for HilbertSpectrum
impl Sync for HilbertSpectrum
impl Unpin for HilbertSpectrum
impl UnwindSafe for HilbertSpectrum
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.