Trait basic_dsp::ConvolutionOps

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

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

Required Methods§

source

fn convolve_signal<B>( &mut self, buffer: &mut B, impulse_response: &A ) -> Result<(), ErrorReason>
where B: for<'a> 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().

Object Safety§

This trait is not object safe.

Implementors§

source§

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 S: ToSliceMut<T>, T: RealNumber, N: NumberSpace, D: Domain,

source§

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 S: ToSliceMut<T>, T: RealNumber, N: NumberSpace, D: Domain,

source§

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 S: ToSliceMut<T>, T: RealNumber, N: NumberSpace, D: Domain,

source§

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 S: ToSliceMut<T>, T: RealNumber, N: NumberSpace, D: Domain,

source§

impl<S, SO, T, N, D, NO, DO> ConvolutionOps<DspVec<SO, T, NO, DO>, S, T, NO, DO> for DspVec<S, T, N, D>

source§

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 S: ToSliceMut<T>, T: RealNumber, N: NumberSpace, D: Domain, DspVec<S, T, N, D>: ConvolutionOps<DspVec<S, T, N, D>, S, T, N, D>,

source§

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 S: ToSliceMut<T>, T: RealNumber, N: NumberSpace, D: Domain, DspVec<S, T, N, D>: ConvolutionOps<DspVec<S, T, N, D>, S, T, N, D>,

source§

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 S: ToSliceMut<T>, T: RealNumber, N: NumberSpace, D: Domain, DspVec<S, T, N, D>: ConvolutionOps<DspVec<S, T, N, D>, S, T, N, D>,

source§

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 S: ToSliceMut<T>, T: RealNumber, N: NumberSpace, D: Domain, DspVec<S, T, N, D>: ConvolutionOps<DspVec<S, T, N, D>, S, T, N, D>,