[][src]Trait basic_dsp::SymmetricFrequencyToTimeDomainOperations

pub trait SymmetricFrequencyToTimeDomainOperations<S, T>: ToRealTimeResult where
    S: ToSliceMut<T>,
    T: RealNumber
{ fn plain_sifft<B>(
        self,
        buffer: &mut B
    ) -> Result<Self::RealTimeResult, (ErrorReason, Self::RealTimeResult)>
    where
        B: Buffer<'a, S, T>
;
fn sifft<B>(
        self,
        buffer: &mut B
    ) -> Result<Self::RealTimeResult, (ErrorReason, Self::RealTimeResult)>
    where
        B: Buffer<'a, S, T>
;
fn windowed_sifft<B>(
        self,
        buffer: &mut B,
        window: &dyn WindowFunction<T>
    ) -> Result<Self::RealTimeResult, (ErrorReason, Self::RealTimeResult)>
    where
        B: Buffer<'a, S, T>
; }

Defines all operations which are valid on DataVecs containing frequency domain data and the data is assumed to half of complex conjugate symmetric spectrum round 0 Hz where the 0 Hz element itself is real.

Failures

All operations in this trait set self.len() to 0 if the first element (0Hz) isn't real.

Required methods

fn plain_sifft<B>(
    self,
    buffer: &mut B
) -> Result<Self::RealTimeResult, (ErrorReason, Self::RealTimeResult)> where
    B: Buffer<'a, S, T>, 

Performs a Symmetric Inverse Fast Fourier Transformation under the assumption that self contains half of a symmetric spectrum starting from 0 Hz. This assumption isn't verified and no error is raised if the spectrum isn't symmetric. The reason for this is that there is no robust verification possible.

The argument indicates whether the resulting real vector should have 2*N or 2*N-1 points.

This version of the IFFT neither applies a window nor does it scale the vector.

fn sifft<B>(
    self,
    buffer: &mut B
) -> Result<Self::RealTimeResult, (ErrorReason, Self::RealTimeResult)> where
    B: Buffer<'a, S, T>, 

Performs a Symmetric Inverse Fast Fourier Transformation under the assumption that self contains half of a symmetric spectrum starting from 0 Hz. This assumption isn't verified and no error is raised if the spectrum isn't symmetric. The reason for this is that there is no robust verification possible.

The argument indicates whether the resulting real vector should have 2*N or 2*N-1 points.

fn windowed_sifft<B>(
    self,
    buffer: &mut B,
    window: &dyn WindowFunction<T>
) -> Result<Self::RealTimeResult, (ErrorReason, Self::RealTimeResult)> where
    B: Buffer<'a, S, T>, 

Performs a Symmetric Inverse Fast Fourier Transformation (SIFFT) and removes the FFT window. The SIFFT is performed under the assumption that self contains half of a symmetric spectrum starting from 0 Hz. This assumption isn't verified and no error is raised if the spectrum isn't symmetric. The reason for this is that there is no robust verification possible.

The argument indicates whether the resulting real vector should have 2*N or 2*N-1 points.

Loading content...

Implementors

impl<S, T, N, D> SymmetricFrequencyToTimeDomainOperations<S, T> for DspVec<S, T, N, D> where
    D: FrequencyDomain,
    N: ComplexNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber,
    DspVec<S, T, N, D>: ToRealTimeResult,
    DspVec<S, T, N, D>: ToTimeResult,
    DspVec<S, T, N, D>: FrequencyDomainOperations<S, T>,
    <DspVec<S, T, N, D> as ToRealTimeResult>::RealTimeResult: RededicateForceOps<DspVec<S, T, N, D>>,
    <DspVec<S, T, N, D> as ToRealTimeResult>::RealTimeResult: TimeDomainOperations<S, T>, 
[src]

impl<V, S, T> SymmetricFrequencyToTimeDomainOperations<S, T> for Matrix2xN<V, S, T> where
    S: ToSliceMut<T>,
    T: RealNumber,
    V: Vector<T> + SymmetricFrequencyToTimeDomainOperations<S, T>,
    <V as ToRealTimeResult>::RealTimeResult: Vector<T>, 
[src]

impl<V, S, T> SymmetricFrequencyToTimeDomainOperations<S, T> for Matrix3xN<V, S, T> where
    S: ToSliceMut<T>,
    T: RealNumber,
    V: Vector<T> + SymmetricFrequencyToTimeDomainOperations<S, T>,
    <V as ToRealTimeResult>::RealTimeResult: Vector<T>, 
[src]

impl<V, S, T> SymmetricFrequencyToTimeDomainOperations<S, T> for Matrix4xN<V, S, T> where
    S: ToSliceMut<T>,
    T: RealNumber,
    V: Vector<T> + SymmetricFrequencyToTimeDomainOperations<S, T>,
    <V as ToRealTimeResult>::RealTimeResult: Vector<T>, 
[src]

impl<V, S, T> SymmetricFrequencyToTimeDomainOperations<S, T> for MatrixMxN<V, S, T> where
    S: ToSliceMut<T>,
    T: RealNumber,
    V: Vector<T> + SymmetricFrequencyToTimeDomainOperations<S, T>,
    <V as ToRealTimeResult>::RealTimeResult: Vector<T>, 
[src]

Loading content...