Add reset method to AvPowerSpectra
This commit is contained in:
parent
d695b31426
commit
14dae88d48
@ -47,13 +47,14 @@ pub enum ApsMode {
|
||||
/// where new data is weighted with old data, and old data exponentially
|
||||
/// backs off. This mode only makes sense when `tau >> nfft/fs`
|
||||
ExponentialWeighting {
|
||||
/// Sampling frequency in [Hz]
|
||||
/// Sampling frequency in [Hz], used for computing IIR filter coefficient.
|
||||
fs: Flt,
|
||||
/// Time weighting constant, its inverse is its approximate -3 dB point
|
||||
/// for forgetting old history.
|
||||
/// Time weighting constant, follows convention of Sound Level Meters.
|
||||
/// Means the data is approximately low-pass filtered with a cut-off
|
||||
/// frequency f_c of s/tau ≅ 1 → f_c = (2 * pi * tau)^-1.
|
||||
tau: Flt,
|
||||
},
|
||||
/// Spectrogram mode. Only returns the latest estimates.
|
||||
/// Spectrogram mode. Only returns the latest estimate(s).
|
||||
Spectrogram,
|
||||
}
|
||||
impl Default for ApsMode {
|
||||
@ -119,15 +120,29 @@ impl AvPowerSpectra {
|
||||
Ok(overlap_keep)
|
||||
}
|
||||
|
||||
/// Resets all state, starting with a clean sleave. After this step, also
|
||||
/// the number of channels can be different on the input.
|
||||
pub fn reset(&mut self) {
|
||||
self.N = 0;
|
||||
self.timebuf.reset();
|
||||
self.cur_est = CPS::zeros((0,0,0));
|
||||
}
|
||||
/// Create new averaged power spectra estimator for weighing over the full
|
||||
/// amount of data supplied (no exponential spectra weighting) using
|
||||
/// sensible defaults (Hann window, 50% overlap).
|
||||
/// sensible defaults (Hann window, 50% overlap). This is a simpler method
|
||||
/// than [AvPowerSpectra.build]. But use with caution, it might panic on
|
||||
/// invalid nfft values!
|
||||
///
|
||||
/// # Args
|
||||
///
|
||||
/// * `nfft` - FFT Length
|
||||
pub fn new_simple(nfft: usize) -> Result<AvPowerSpectra> {
|
||||
return AvPowerSpectra::build(nfft, None, None, None);
|
||||
///
|
||||
/// # Panics
|
||||
///
|
||||
/// - When nfft is not even, or 0.
|
||||
///
|
||||
pub fn new_simple(nfft: usize) -> AvPowerSpectra {
|
||||
AvPowerSpectra::build(nfft, None, None, None).unwrap()
|
||||
}
|
||||
|
||||
/// Create power spectra estimator which weighs either all data
|
||||
@ -147,7 +162,7 @@ impl AvPowerSpectra {
|
||||
/// - `nfft` - The discrete Fourier Transform length used in the estimation.
|
||||
/// - `windowtype` - Window Type. The window type to use Hann, etc.
|
||||
/// - `overlap` - Amount of overlap in
|
||||
/// - `mode` - The mode in which the
|
||||
/// - `mode` - The mode in which the [AvPowerSpectra] runs. See [ApsMode].
|
||||
///
|
||||
pub fn build(
|
||||
nfft: usize,
|
||||
@ -393,7 +408,8 @@ mod test {
|
||||
assert!(false, "Should return one value");
|
||||
}
|
||||
let overlap_keep = AvPowerSpectra::get_overlap_keep(nfft, Overlap::NoOverlap).unwrap();
|
||||
if let ApsResult::OnlyLastResult(v) = aps.compute_last(&timedata_zeros) {
|
||||
if let ApsResult::OnlyLastResult(_) = aps.compute_last(&timedata_zeros) {
|
||||
// Do nothing with it.
|
||||
} else {
|
||||
assert!(false, "Should return one value");
|
||||
}
|
||||
|
@ -68,7 +68,8 @@ fn hamming(N: usize) -> Dcol {
|
||||
)
|
||||
}
|
||||
|
||||
/// Window type descriptors. Used for storage
|
||||
/// Window type descriptors. Used for computing the actual window with private
|
||||
/// functions. See [Window], for the actual window (taper).
|
||||
#[derive(Display, Clone, Debug)]
|
||||
pub enum WindowType {
|
||||
/// Von Hann window
|
||||
|
Loading…
Reference in New Issue
Block a user