Trait basic_dsp::FrequencyDomainOperations
source · [−]pub trait FrequencyDomainOperations<S, T>where
S: ToSliceMut<T>,
T: RealNumber,{
fn mirror<B>(&mut self, buffer: &mut B)
where
B: for<'a> Buffer<'a, S, T>;
fn fft_shift(&mut self);
fn ifft_shift(&mut self);
}
Expand description
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
sourcefn mirror<B>(&mut self, buffer: &mut B)where
B: for<'a> Buffer<'a, S, T>,
fn mirror<B>(&mut self, buffer: &mut B)where
B: for<'a> Buffer<'a, S, T>,
This function mirrors the spectrum vector to transform a symmetric spectrum into a full spectrum with the DC element at index 0 (no FFT shift/swap halves).
The argument indicates whether the resulting real vector should have 2*N
or 2*N-1
points.
Example
use basic_dsp_vector::*;
let mut vector = vec!(Complex::new(1.0, 2.0), Complex::new(3.0, 4.0), Complex::new(5.0, 6.0)).to_complex_freq_vec();
let mut buffer = SingleBuffer::new();
vector.mirror(&mut buffer);
assert_eq!([Complex::new(1.0, 2.0), Complex::new(3.0, 4.0), Complex::new(5.0, 6.0), Complex::new(5.0, -6.0), Complex::new(3.0, -4.0)], &vector[..]);
sourcefn ifft_shift(&mut self)
fn ifft_shift(&mut self)
Swaps vector halves before an Inverse Fourier Transformation.