Trait basic_dsp::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.

Object Safety§

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,

source§

impl<V, S, T> FrequencyDomainOperations<S, T> for Matrix2xN<V, S, T>
where V: Vector<T> + FrequencyDomainOperations<S, T>, S: ToSliceMut<T>, T: RealNumber,

source§

impl<V, S, T> FrequencyDomainOperations<S, T> for Matrix3xN<V, S, T>
where V: Vector<T> + FrequencyDomainOperations<S, T>, S: ToSliceMut<T>, T: RealNumber,

source§

impl<V, S, T> FrequencyDomainOperations<S, T> for Matrix4xN<V, S, T>
where V: Vector<T> + FrequencyDomainOperations<S, T>, S: ToSliceMut<T>, T: RealNumber,

source§

impl<V, S, T> FrequencyDomainOperations<S, T> for MatrixMxN<V, S, T>
where V: Vector<T> + FrequencyDomainOperations<S, T>, S: ToSliceMut<T>, T: RealNumber,