pub struct PsdCascade<const N: usize> { /* private fields */ }Expand description
Online power spectral density estimation
This performs efficient long term power spectral density monitoring in real time. The idea is to perform FFTs over relatively short windows and simultaneously decimate the time domain data, everything in multiple stages, then stitch together the FFT bins from the different stages. This allows arbitrarily large effective FFTs sizes in practice with only logarithmically increasing memory and cpu consumption. And it makes available PSD data from higher frequency stages immediately to get rid of the delay in recording and computing large FFTs. The effective full FFT size grows in real-time, is unlimited, and does not need to be fixed. This is well defined with the caveat that spur power (bin power not dominated by noise) depends on the stage-dependent bin width. This also typically what some modern signal analyzers or noise metrology instruments do.
Infinite averaging Incremental updates Automatic FFT stage extension
Implementations§
Source§impl<const N: usize> PsdCascade<N>
impl<const N: usize> PsdCascade<N>
Sourcepub fn new(stage_depth: usize) -> Self
pub fn new(stage_depth: usize) -> Self
Create a new Psd instance
fft_size: size of the FFT blocks and the window stage_length: number of decimation stages. rate change per stage is 1 << stage_length detrend: Detrend method
pub fn set_avg(&mut self, avg: AvgOpts)
pub fn set_detrend(&mut self, d: Detrend)
Trait Implementations§
Source§impl<const N: usize> Clone for PsdCascade<N>
impl<const N: usize> Clone for PsdCascade<N>
Source§fn clone(&self) -> PsdCascade<N>
fn clone(&self) -> PsdCascade<N>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more