Struct SSWTPlan
pub struct SSWTPlan { /* private fields */ }Expand description
Reusable SSWT execution plan.
A plan owns an SSWTConfig and precomputes config-derived state that is
otherwise rebuilt on every sswt / sswt_into call: the output
frequency grid, scale-integration weights, frequency-bin mapper, and SST
inversion constant. It also lazily caches the CWT wavelet spectra for the
most recent signal FFT length. Use it when repeatedly applying the same
SSWT configuration to many signals or rolling windows.
The plan-owned spectrum cache costs roughly
scales.len() * fft_size * size_of::<Complex64>() bytes for the most
recent FFT length. Planned transforms also reuse a thread-local flat CWT
coefficient scratch buffer that can grow to
scales.len() * signal.len() * size_of::<Complex64>() bytes per calling
thread. SSWTPlan::new defaults to SSWTPlanMemoryMode::Balanced;
use SSWTPlan::with_options with SSWTPlanOptions::fast to enable
capped parallel reassignment with up to four transient partial output
planes for large transforms.
The input-dependent pieces remain per-call: signal-length validation,
gamma resolution when SSWTConfig::gamma is None, the signal FFT,
and the output/time buffers.
Implementations§
§impl SSWTPlan
impl SSWTPlan
pub fn new(config: SSWTConfig) -> Result<Self>
pub fn new(config: SSWTConfig) -> Result<Self>
Build a reusable plan from an SSWTConfig.
This validates every config-only invariant. Signal length is checked when the plan is executed because it depends on the input.
pub fn with_options(
config: SSWTConfig,
options: SSWTPlanOptions,
) -> Result<Self>
pub fn with_options( config: SSWTConfig, options: SSWTPlanOptions, ) -> Result<Self>
Build a reusable plan from an SSWTConfig and explicit options.
This validates every config-only invariant. Signal length is checked when the plan is executed because it depends on the input.
pub fn config(&self) -> &SSWTConfig
pub fn config(&self) -> &SSWTConfig
Return the configuration owned by this plan.
pub fn frequencies(&self) -> &[f64]
pub fn frequencies(&self) -> &[f64]
Return the cached output frequency grid in Hz.
pub fn options(&self) -> SSWTPlanOptions
pub fn options(&self) -> SSWTPlanOptions
Return the options used by this plan.
pub fn transform(&self, signal: &Signal<f64>) -> Result<SSWTResult>
pub fn transform(&self, signal: &Signal<f64>) -> Result<SSWTResult>
Execute the plan and return a fresh SSWTResult.
pub fn transform_into(
&self,
signal: &Signal<f64>,
out: &mut SSWTResult,
) -> Result<()>
pub fn transform_into( &self, signal: &Signal<f64>, out: &mut SSWTResult, ) -> Result<()>
Execute the plan into a caller-supplied result, reusing result buffers.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for SSWTPlan
impl !RefUnwindSafe for SSWTPlan
impl Send for SSWTPlan
impl Sync for SSWTPlan
impl Unpin for SSWTPlan
impl !UnwindSafe for SSWTPlan
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> 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.