[][src]Trait basic_dsp::ConvolutionOps

pub trait ConvolutionOps<A, S, T, N, D> where
    D: Domain,
    N: NumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber
{ fn convolve_signal<B>(
        &mut self,
        buffer: &mut B,
        impulse_response: &A
    ) -> Result<(), ErrorReason>
    where
        B: Buffer<'a, S, T>
; }

Provides a convolution operation for types which at some point are slice based.

Required methods

fn convolve_signal<B>(
    &mut self,
    buffer: &mut B,
    impulse_response: &A
) -> Result<(), ErrorReason> where
    B: Buffer<'a, S, T>, 

Convolves self with the convolution function impulse_response. For performance it's recommended to use multiply both vectors in frequency domain instead of this operation.

Failures

TransRes may report the following ErrorReason members:

  1. VectorMustBeInTimeDomain: if self is in frequency domain.
  2. VectorMetaDataMustAgree: in case self and impulse_response are not in the same number space and same domain.
  3. InvalidArgumentLength: if self.points() < impulse_response.points().
Loading content...

Implementors

impl<'a, S, T, N, D> ConvolutionOps<[[&'a DspVec<S, T, N, D>; 2]; 2], S, T, N, D> for Matrix2xN<DspVec<S, T, N, D>, S, T> where
    D: Domain,
    N: NumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber
[src]

impl<'a, S, T, N, D> ConvolutionOps<[[&'a DspVec<S, T, N, D>; 3]; 3], S, T, N, D> for Matrix3xN<DspVec<S, T, N, D>, S, T> where
    D: Domain,
    N: NumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber
[src]

impl<'a, S, T, N, D> ConvolutionOps<[[&'a DspVec<S, T, N, D>; 4]; 4], S, T, N, D> for Matrix4xN<DspVec<S, T, N, D>, S, T> where
    D: Domain,
    N: NumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber
[src]

impl<'a, S, T, N, D> ConvolutionOps<Vec<&'a Vec<&'a DspVec<S, T, N, D>>>, S, T, N, D> for MatrixMxN<DspVec<S, T, N, D>, S, T> where
    D: Domain,
    N: NumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber
[src]

impl<S, SO, T, N, D, NO, DO> ConvolutionOps<DspVec<SO, T, NO, DO>, S, T, NO, DO> for DspVec<S, T, N, D> where
    D: TimeDomain,
    DO: TimeDomain,
    N: NumberSpace,
    NO: PosEq<N> + NumberSpace,
    S: ToSliceMut<T>,
    SO: ToSliceMut<T>,
    T: RealNumber,
    DspVec<S, T, N, D>: TimeToFrequencyDomainOperations<S, T>,
    DspVec<S, T, N, D>: Clone,
    DspVec<SO, T, N, D>: TimeToFrequencyDomainOperations<SO, T>,
    DspVec<SO, T, N, D>: Clone
[src]

impl<S, T, N, D> ConvolutionOps<DspVec<S, T, N, D>, S, T, N, D> for Matrix2xN<DspVec<S, T, N, D>, S, T> where
    D: Domain,
    N: NumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber,
    DspVec<S, T, N, D>: ConvolutionOps<DspVec<S, T, N, D>, S, T, N, D>, 
[src]

impl<S, T, N, D> ConvolutionOps<DspVec<S, T, N, D>, S, T, N, D> for Matrix3xN<DspVec<S, T, N, D>, S, T> where
    D: Domain,
    N: NumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber,
    DspVec<S, T, N, D>: ConvolutionOps<DspVec<S, T, N, D>, S, T, N, D>, 
[src]

impl<S, T, N, D> ConvolutionOps<DspVec<S, T, N, D>, S, T, N, D> for Matrix4xN<DspVec<S, T, N, D>, S, T> where
    D: Domain,
    N: NumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber,
    DspVec<S, T, N, D>: ConvolutionOps<DspVec<S, T, N, D>, S, T, N, D>, 
[src]

impl<S, T, N, D> ConvolutionOps<DspVec<S, T, N, D>, S, T, N, D> for MatrixMxN<DspVec<S, T, N, D>, S, T> where
    D: Domain,
    N: NumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber,
    DspVec<S, T, N, D>: ConvolutionOps<DspVec<S, T, N, D>, S, T, N, D>, 
[src]

Loading content...