Trait basic_dsp::Convolution
[−]
[src]
pub trait Convolution<T, C>: DataVector<T> where T: RealNumber { fn convolve(self, impulse_response: C, ratio: T, len: usize) -> VecResult<Self>; }
Provides a convolution operation for data vectors.
Required Methods
fn convolve(self, impulse_response: C, ratio: T, len: usize) -> VecResult<Self>
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
VecResult may report the following ErrorReason
members:
VectorMustBeComplex
: ifself
is in real number space butimpulse_response
is in complex number space.VectorMustBeInTimeDomain
: ifself
is in frequency domain.
Implementors
impl<'a> Convolution<f32, &'a RealImpulseResponse<f32>> for GenericDataVector<f32>
impl<'a> Convolution<f32, &'a ComplexImpulseResponse<f32>> for GenericDataVector<f32>
impl<'a> Convolution<f64, &'a RealImpulseResponse<f64>> for GenericDataVector<f64>
impl<'a> Convolution<f64, &'a ComplexImpulseResponse<f64>> for GenericDataVector<f64>
impl<'a> Convolution<f32, &'a RealImpulseResponse<f32>> for RealTimeVector<f32>
impl<'a> Convolution<f32, &'a RealImpulseResponse<f32>> for ComplexTimeVector<f32>
impl<'a> Convolution<f32, &'a ComplexImpulseResponse<f32>> for ComplexTimeVector<f32>
impl<'a> Convolution<f64, &'a RealImpulseResponse<f64>> for RealTimeVector<f64>
impl<'a> Convolution<f64, &'a RealImpulseResponse<f64>> for ComplexTimeVector<f64>
impl<'a> Convolution<f64, &'a ComplexImpulseResponse<f64>> for ComplexTimeVector<f64>