Trait basic_dsp::SymmetricFrequencyToTimeDomainOperations [−][src]
pub trait SymmetricFrequencyToTimeDomainOperations<S, T>: ToRealTimeResult where
T: RealNumber,
S: ToSliceMut<T>, { fn plain_sifft<B>(
self,
buffer: &mut B
) -> Result<Self::RealTimeResult, (ErrorReason, Self::RealTimeResult)>
where
B: for<'a> Buffer<'a, S, T>; fn sifft<B>(
self,
buffer: &mut B
) -> Result<Self::RealTimeResult, (ErrorReason, Self::RealTimeResult)>
where
B: for<'a> Buffer<'a, S, T>; fn windowed_sifft<B>(
self,
buffer: &mut B,
window: &dyn WindowFunction<T>
) -> Result<Self::RealTimeResult, (ErrorReason, Self::RealTimeResult)>
where
B: for<'a> Buffer<'a, S, T>; }
Expand description
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: for<'a> Buffer<'a, S, T>, [src]
fn plain_sifft<B>(
self,
buffer: &mut B
) -> Result<Self::RealTimeResult, (ErrorReason, Self::RealTimeResult)> where
B: for<'a> Buffer<'a, S, T>, [src]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: for<'a> Buffer<'a, S, T>, [src]
fn sifft<B>(
self,
buffer: &mut B
) -> Result<Self::RealTimeResult, (ErrorReason, Self::RealTimeResult)> where
B: for<'a> Buffer<'a, S, T>, [src]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: for<'a> Buffer<'a, S, T>, [src]
fn windowed_sifft<B>(
self,
buffer: &mut B,
window: &dyn WindowFunction<T>
) -> Result<Self::RealTimeResult, (ErrorReason, Self::RealTimeResult)> where
B: for<'a> Buffer<'a, S, T>, [src]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.
Implementors
impl<S, T, N, D> SymmetricFrequencyToTimeDomainOperations<S, T> for DspVec<S, T, N, D> where
N: ComplexNumberSpace,
T: RealNumber,
S: ToSliceMut<T>,
D: FrequencyDomain,
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<S, T, N, D> SymmetricFrequencyToTimeDomainOperations<S, T> for DspVec<S, T, N, D> where
N: ComplexNumberSpace,
T: RealNumber,
S: ToSliceMut<T>,
D: FrequencyDomain,
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]pub fn plain_sifft<B>(
self,
buffer: &mut B
) -> Result<<DspVec<S, T, N, D> as ToRealTimeResult>::RealTimeResult, (ErrorReason, <DspVec<S, T, N, D> as ToRealTimeResult>::RealTimeResult)> where
B: for<'a> Buffer<'a, S, T>, [src]pub fn sifft<B>(
self,
buffer: &mut B
) -> Result<<DspVec<S, T, N, D> as ToRealTimeResult>::RealTimeResult, (ErrorReason, <DspVec<S, T, N, D> as ToRealTimeResult>::RealTimeResult)> where
B: for<'a> Buffer<'a, S, T>, [src]pub fn windowed_sifft<B>(
self,
buffer: &mut B,
window: &dyn WindowFunction<T>
) -> Result<<DspVec<S, T, N, D> as ToRealTimeResult>::RealTimeResult, (ErrorReason, <DspVec<S, T, N, D> as ToRealTimeResult>::RealTimeResult)> where
B: for<'a> Buffer<'a, S, T>, [src]impl<V, S, T> SymmetricFrequencyToTimeDomainOperations<S, T> for Matrix2xN<V, S, T> where
T: RealNumber,
V: Vector<T> + SymmetricFrequencyToTimeDomainOperations<S, T>,
S: ToSliceMut<T>,
<V as ToRealTimeResult>::RealTimeResult: Vector<T>, [src]
impl<V, S, T> SymmetricFrequencyToTimeDomainOperations<S, T> for Matrix2xN<V, S, T> where
T: RealNumber,
V: Vector<T> + SymmetricFrequencyToTimeDomainOperations<S, T>,
S: ToSliceMut<T>,
<V as ToRealTimeResult>::RealTimeResult: Vector<T>, [src]pub fn plain_sifft<B>(
self,
buffer: &mut B
) -> Result<<Matrix2xN<V, S, T> as ToRealTimeResult>::RealTimeResult, (ErrorReason, <Matrix2xN<V, S, T> as ToRealTimeResult>::RealTimeResult)> where
B: for<'b> Buffer<'b, S, T>, [src]pub fn sifft<B>(
self,
buffer: &mut B
) -> Result<<Matrix2xN<V, S, T> as ToRealTimeResult>::RealTimeResult, (ErrorReason, <Matrix2xN<V, S, T> as ToRealTimeResult>::RealTimeResult)> where
B: for<'b> Buffer<'b, S, T>, [src]pub fn windowed_sifft<B>(
self,
buffer: &mut B,
window: &dyn WindowFunction<T>
) -> Result<<Matrix2xN<V, S, T> as ToRealTimeResult>::RealTimeResult, (ErrorReason, <Matrix2xN<V, S, T> as ToRealTimeResult>::RealTimeResult)> where
B: for<'b> Buffer<'b, S, T>, [src]impl<V, S, T> SymmetricFrequencyToTimeDomainOperations<S, T> for Matrix3xN<V, S, T> where
T: RealNumber,
V: Vector<T> + SymmetricFrequencyToTimeDomainOperations<S, T>,
S: ToSliceMut<T>,
<V as ToRealTimeResult>::RealTimeResult: Vector<T>, [src]
impl<V, S, T> SymmetricFrequencyToTimeDomainOperations<S, T> for Matrix3xN<V, S, T> where
T: RealNumber,
V: Vector<T> + SymmetricFrequencyToTimeDomainOperations<S, T>,
S: ToSliceMut<T>,
<V as ToRealTimeResult>::RealTimeResult: Vector<T>, [src]pub fn plain_sifft<B>(
self,
buffer: &mut B
) -> Result<<Matrix3xN<V, S, T> as ToRealTimeResult>::RealTimeResult, (ErrorReason, <Matrix3xN<V, S, T> as ToRealTimeResult>::RealTimeResult)> where
B: for<'b> Buffer<'b, S, T>, [src]pub fn sifft<B>(
self,
buffer: &mut B
) -> Result<<Matrix3xN<V, S, T> as ToRealTimeResult>::RealTimeResult, (ErrorReason, <Matrix3xN<V, S, T> as ToRealTimeResult>::RealTimeResult)> where
B: for<'b> Buffer<'b, S, T>, [src]pub fn windowed_sifft<B>(
self,
buffer: &mut B,
window: &dyn WindowFunction<T>
) -> Result<<Matrix3xN<V, S, T> as ToRealTimeResult>::RealTimeResult, (ErrorReason, <Matrix3xN<V, S, T> as ToRealTimeResult>::RealTimeResult)> where
B: for<'b> Buffer<'b, S, T>, [src]impl<V, S, T> SymmetricFrequencyToTimeDomainOperations<S, T> for Matrix4xN<V, S, T> where
T: RealNumber,
V: Vector<T> + SymmetricFrequencyToTimeDomainOperations<S, T>,
S: ToSliceMut<T>,
<V as ToRealTimeResult>::RealTimeResult: Vector<T>, [src]
impl<V, S, T> SymmetricFrequencyToTimeDomainOperations<S, T> for Matrix4xN<V, S, T> where
T: RealNumber,
V: Vector<T> + SymmetricFrequencyToTimeDomainOperations<S, T>,
S: ToSliceMut<T>,
<V as ToRealTimeResult>::RealTimeResult: Vector<T>, [src]pub fn plain_sifft<B>(
self,
buffer: &mut B
) -> Result<<Matrix4xN<V, S, T> as ToRealTimeResult>::RealTimeResult, (ErrorReason, <Matrix4xN<V, S, T> as ToRealTimeResult>::RealTimeResult)> where
B: for<'b> Buffer<'b, S, T>, [src]pub fn sifft<B>(
self,
buffer: &mut B
) -> Result<<Matrix4xN<V, S, T> as ToRealTimeResult>::RealTimeResult, (ErrorReason, <Matrix4xN<V, S, T> as ToRealTimeResult>::RealTimeResult)> where
B: for<'b> Buffer<'b, S, T>, [src]pub fn windowed_sifft<B>(
self,
buffer: &mut B,
window: &dyn WindowFunction<T>
) -> Result<<Matrix4xN<V, S, T> as ToRealTimeResult>::RealTimeResult, (ErrorReason, <Matrix4xN<V, S, T> as ToRealTimeResult>::RealTimeResult)> where
B: for<'b> Buffer<'b, S, T>, [src]impl<V, S, T> SymmetricFrequencyToTimeDomainOperations<S, T> for MatrixMxN<V, S, T> where
T: RealNumber,
V: Vector<T> + SymmetricFrequencyToTimeDomainOperations<S, T>,
S: ToSliceMut<T>,
<V as ToRealTimeResult>::RealTimeResult: Vector<T>, [src]
impl<V, S, T> SymmetricFrequencyToTimeDomainOperations<S, T> for MatrixMxN<V, S, T> where
T: RealNumber,
V: Vector<T> + SymmetricFrequencyToTimeDomainOperations<S, T>,
S: ToSliceMut<T>,
<V as ToRealTimeResult>::RealTimeResult: Vector<T>, [src]pub fn plain_sifft<B>(
self,
buffer: &mut B
) -> Result<<MatrixMxN<V, S, T> as ToRealTimeResult>::RealTimeResult, (ErrorReason, <MatrixMxN<V, S, T> as ToRealTimeResult>::RealTimeResult)> where
B: for<'b> Buffer<'b, S, T>, [src]pub fn sifft<B>(
self,
buffer: &mut B
) -> Result<<MatrixMxN<V, S, T> as ToRealTimeResult>::RealTimeResult, (ErrorReason, <MatrixMxN<V, S, T> as ToRealTimeResult>::RealTimeResult)> where
B: for<'b> Buffer<'b, S, T>, [src]pub fn windowed_sifft<B>(
self,
buffer: &mut B,
window: &dyn WindowFunction<T>
) -> Result<<MatrixMxN<V, S, T> as ToRealTimeResult>::RealTimeResult, (ErrorReason, <MatrixMxN<V, S, T> as ToRealTimeResult>::RealTimeResult)> where
B: for<'b> Buffer<'b, S, T>, [src]