[−][src]Trait basic_dsp_vector::Convolution
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>,
&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:
VectorMustBeComplex
: ifself
is in real number space overlap_discardimpulse_response
is in complex number space.VectorMustBeInTimeDomain
: ifself
is in frequency domain.
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 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>,
fn convolve<B>( | [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]
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>,