[][src]Trait basic_dsp::FrequencyToTimeDomainOperations

pub trait FrequencyToTimeDomainOperations<S, T>: ToTimeResult where
    S: ToSliceMut<T>,
    T: RealNumber
{ fn plain_ifft<B>(self, buffer: &mut B) -> Self::TimeResult
    where
        B: Buffer<'a, S, T>
;
fn ifft<B>(self, buffer: &mut B) -> Self::TimeResult
    where
        B: Buffer<'a, S, T>
;
fn windowed_ifft<B>(
        self,
        buffer: &mut B,
        window: &dyn WindowFunction<T>
    ) -> Self::TimeResult
    where
        B: Buffer<'a, S, T>
; }

Defines all operations which are valid on DataVecs containing frequency domain data.

Failures

All operations in this trait set self.len() to 0 if the vector isn't in frequency domain and complex number space.

Required methods

fn plain_ifft<B>(self, buffer: &mut B) -> Self::TimeResult where
    B: Buffer<'a, S, T>, 

Performs an Inverse Fast Fourier Transformation transforming a frequency domain vector into a time domain vector.

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

Example

use std::f32;
use basic_dsp_vector::*;
let vector = vec!(0.0, 0.0, 1.0, 0.0, 0.0, 0.0).to_complex_freq_vec();
let mut buffer = SingleBuffer::new();
let result = vector.plain_ifft(&mut buffer);
let actual = &result[..];
let expected = &[1.0, 0.0, -0.5, 0.8660254, -0.5, -0.8660254];
assert_eq!(actual.len(), expected.len());
for i in 0..actual.len() {
       assert!(f32::abs(actual[i] - expected[i]) < 1e-4);
}

fn ifft<B>(self, buffer: &mut B) -> Self::TimeResult where
    B: Buffer<'a, S, T>, 

Performs an Inverse Fast Fourier Transformation transforming a frequency domain vector into a time domain vector.

Example

use std::f32;
use basic_dsp_vector::*;
let vector = vec!(0.0, 0.0, 0.0, 0.0, 3.0, 0.0).to_complex_freq_vec();
let mut buffer = SingleBuffer::new();
let result = vector.ifft(&mut buffer);
let actual = &result[..];
let expected = &[1.0, 0.0, -0.5, 0.8660254, -0.5, -0.8660254];
assert_eq!(actual.len(), expected.len());
for i in 0..actual.len() {
       assert!(f32::abs(actual[i] - expected[i]) < 1e-4);
}

fn windowed_ifft<B>(
    self,
    buffer: &mut B,
    window: &dyn WindowFunction<T>
) -> Self::TimeResult where
    B: Buffer<'a, S, T>, 

Performs an Inverse Fast Fourier Transformation transforming a frequency domain vector into a time domain vector and removes the FFT window.

Loading content...

Implementors

impl<S, T, N, D> FrequencyToTimeDomainOperations<S, T> for DspVec<S, T, N, D> where
    D: FrequencyDomain,
    N: ComplexNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber,
    DspVec<S, T, N, D>: ToTimeResult,
    <DspVec<S, T, N, D> as ToTimeResult>::TimeResult: RededicateForceOps<DspVec<S, T, N, D>>,
    <DspVec<S, T, N, D> as ToTimeResult>::TimeResult: TimeDomainOperations<S, T>, 
[src]

impl<V, S, T> FrequencyToTimeDomainOperations<S, T> for Matrix2xN<V, S, T> where
    S: ToSliceMut<T>,
    T: RealNumber,
    V: Vector<T> + FrequencyToTimeDomainOperations<S, T>,
    <V as ToTimeResult>::TimeResult: Vector<T>, 
[src]

impl<V, S, T> FrequencyToTimeDomainOperations<S, T> for Matrix3xN<V, S, T> where
    S: ToSliceMut<T>,
    T: RealNumber,
    V: Vector<T> + FrequencyToTimeDomainOperations<S, T>,
    <V as ToTimeResult>::TimeResult: Vector<T>, 
[src]

impl<V, S, T> FrequencyToTimeDomainOperations<S, T> for Matrix4xN<V, S, T> where
    S: ToSliceMut<T>,
    T: RealNumber,
    V: Vector<T> + FrequencyToTimeDomainOperations<S, T>,
    <V as ToTimeResult>::TimeResult: Vector<T>, 
[src]

impl<V, S, T> FrequencyToTimeDomainOperations<S, T> for MatrixMxN<V, S, T> where
    S: ToSliceMut<T>,
    T: RealNumber,
    V: Vector<T> + FrequencyToTimeDomainOperations<S, T>,
    <V as ToTimeResult>::TimeResult: Vector<T>, 
[src]

Loading content...