pub trait FrequencyDomainOperations<S, T>where
S: ToSliceMut<T>,
T: RealNumber,{
// Required methods
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.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.