Struct ComplexPaul
pub struct ComplexPaul {
pub order: u32,
}Expand description
Complex Paul Wavelet
The Paul wavelet is particularly good for detecting oscillatory patterns and modulated signals in financial time series. It has asymmetric time localization properties.
Mathematical form: ψ(t) = 2^m * i^m * m! / (π * (m + 1/2)!) * (1 - it)^(-m-1)
Fields§
§order: u32Order parameter (m)
Implementations§
§impl ComplexPaul
impl ComplexPaul
pub fn for_oscillations() -> Self
pub fn for_oscillations() -> Self
Create version optimized for oscillation detection
Trait Implementations§
§impl Clone for ComplexPaul
impl Clone for ComplexPaul
§fn clone(&self) -> ComplexPaul
fn clone(&self) -> ComplexPaul
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl ContinuousWavelet for ComplexPaul
impl ContinuousWavelet for ComplexPaul
§fn admissibility_constant(&self) -> f64
fn admissibility_constant(&self) -> f64
ComplexPaul admissibility constant.
Closed form: C_ψ = π / m for m ≥ 1. Derived from
C_ψ = ∫₀^∞ |Ψ̂(ω)|²/ω dω for the analytic Paul wavelet
Ψ̂(ω) ∝ ω^m · e^{−ω}; the integral evaluates exactly (via
Γ(2m)/2^{2m}) to give 1/m modulo normalization-convention
factors that bring the ferro-wave-normalized result to π/m.
Empirical match within 0.5% for m=4 (calibrated by
icwt(cwt(cos)) across multiple frequencies — see
tests/transforms/cwt_reference.rs). Depends on the 2.0.0 fix
to the wavelet’s √(π·(2m)!) denominator (was √(π·Γ(m+1.5))).
m = 0 is non-admissible. The Paul wavelet at order 0
degenerates: Ψ̂(ω) ∝ ω^0 · e^{−ω} = e^{−ω} has non-vanishing
Ψ̂(0), so the Calderón admissibility integral diverges
logarithmically — there is no finite C_ψ. The public
constructor ComplexPaul::new(0) is preserved for the
existing parameter-validation contract; for icwt purposes
the trait default 2π is used as a non-amplitude-correct
fallback (consistent with how non-admissible wavelets are
handled elsewhere — see e.g. ComplexMexicanHat for ω₀ < 2).
icwt(cwt(x), ComplexPaul::new(0)) is therefore shape-correct
but amplitude-biased; use m ≥ 1 for amplitude-correct
reconstruction.
§fn wavelet_function(&self, t: f64, scale: f64) -> Complex<f64>
fn wavelet_function(&self, t: f64, scale: f64) -> Complex<f64>
§fn center_frequency(&self) -> f64
fn center_frequency(&self) -> f64
§fn is_complex(&self) -> bool
fn is_complex(&self) -> bool
§fn wavelet_function_includes_l2_norm(&self) -> bool
fn wavelet_function_includes_l2_norm(&self) -> bool
wavelet_function already includes the CWT L2 amplitude
factor 1/√a in its return value. Read more§fn supports_frequency_domain(&self) -> bool
fn supports_frequency_domain(&self) -> bool
§fn sst_inversion_constant(&self) -> f64
fn sst_inversion_constant(&self) -> f64
R_ψ = ∫₀^∞ Ψ̂*(ω) dω / ω, used by
crate::transform::sswt_extract_component to recover an
EMD-like component from an SST ridge. Read more§fn wavelet_fft(
&self,
_buffer: &mut [FftComplex<f64>],
_scale: f64,
_fft_size: usize,
)
fn wavelet_fft( &self, _buffer: &mut [FftComplex<f64>], _scale: f64, _fft_size: usize, )
§impl Debug for ComplexPaul
impl Debug for ComplexPaul
Auto Trait Implementations§
impl Freeze for ComplexPaul
impl RefUnwindSafe for ComplexPaul
impl Send for ComplexPaul
impl Sync for ComplexPaul
impl Unpin for ComplexPaul
impl UnwindSafe for ComplexPaul
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.