Trait basic_dsp_vector::FrequencyToTimeDomainOperations
[−]
[src]
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<S, T>; fn ifft<B>(self, buffer: &mut B) -> Self::TimeResult where B: Buffer<S, T>; fn windowed_ifft<B>(self,
buffer: &mut B,
window: &WindowFunction<T>)
-> Self::TimeResult where B: Buffer<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<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<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: &WindowFunction<T>)
-> Self::TimeResult where B: Buffer<S, T>
buffer: &mut B,
window: &WindowFunction<T>)
-> Self::TimeResult where B: Buffer<S, T>
Performs an Inverse Fast Fourier Transformation transforming a frequency domain vector into a time domain vector and removes the FFT window.
Implementors
impl<S, T, N, D> FrequencyToTimeDomainOperations<S, T> for DspVec<S, T, N, D> where DspVec<S, T, N, D>: ToTimeResult, DspVec<S, T, N, D>::TimeResult: RededicateForceOps<DspVec<S, T, N, D>> + TimeDomainOperations<S, T>, S: ToSliceMut<T> + Owner, T: RealNumber, N: ComplexNumberSpace, D: FrequencyDomain