[][src]Trait basic_dsp_vector::Convolution

pub trait Convolution<'a, S, T, C: 'a> where
    S: ToSliceMut<T>,
    T: RealNumber
{ fn convolve<B>(
        &mut self,
        buffer: &mut B,
        impulse_response: C,
        ratio: T,
        len: usize
    )
    where
        B: for<'b> Buffer<'b, S, T>
; }

Provides a convolution operations.

Required methods

fn convolve<B>(
    &mut self,
    buffer: &mut B,
    impulse_response: C,
    ratio: T,
    len: usize
) where
    B: for<'b> Buffer<'b, S, T>, 

Convolves self with the convolution function impulse_response. For performance consider to to use FrequencyMultiplication instead of this operation depending on len.

An optimized convolution algorithm is used if 1.0 / ratio is an integer (inside a 1e-6 tolerance) and len is smaller than a threshold (202 right now).

Failures

TransRes may report the following ErrorReason members:

  1. VectorMustBeComplex: if self is in real number space overlap_discard impulse_response is in complex number space.
  2. VectorMustBeInTimeDomain: if self is in frequency domain.
Loading content...

Implementors

impl<'a, S, T, N, D> Convolution<'a, S, T, &'a (dyn ComplexImpulseResponse<T> + 'a)> for DspVec<S, T, N, D> where
    S: ToSliceMut<T>,
    T: RealNumber,
    N: ComplexNumberSpace,
    D: TimeDomain,
    DspVec<S, T, N, D>: TimeToFrequencyDomainOperations<S, T> + Clone + ConvolutionOps<DspVec<InlineVector<T>, T, N, D>, S, T, N, D>, 
[src]

impl<'a, S, T, N, D> Convolution<'a, S, T, &'a (dyn RealImpulseResponse<T> + 'a)> for DspVec<S, T, N, D> where
    S: ToSliceMut<T>,
    T: RealNumber,
    N: NumberSpace,
    D: TimeDomain,
    DspVec<S, T, N, D>: TimeToFrequencyDomainOperations<S, T> + Clone + ConvolutionOps<DspVec<InlineVector<T>, T, N, D>, S, T, N, D>, 
[src]

Loading content...