Trait FrequencyDomainOperations

Source
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§

Source

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[..]);
Source

fn fft_shift(&mut self)

Swaps vector halves after a Fourier Transformation.

Source

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.

Implementors§

Source§

impl<S, T, N, D> FrequencyDomainOperations<S, T> for DspVec<S, T, N, D>
where DspVec<S, T, N, D>: ToTimeResult, <DspVec<S, T, N, D> as ToTimeResult>::TimeResult: RededicateForceOps<DspVec<S, T, N, D>>, S: ToSliceMut<T>, T: RealNumber, N: ComplexNumberSpace, D: FrequencyDomain,