Struct basic_dsp_vector::DspVec [−][src]
pub struct DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, {
pub data: S,
// some fields omitted
}Expand description
A 1xN (one times N elements) or Nx1 data vector as used for most digital signal processing (DSP) operations.
Vectors come in different flavors:
- Time or Frequency domain
- Real or Complex numbers
- 32bit or 64bit floating point numbers
The first two flavors define meta information about the vector and provide compile time
information what operations are available with the given vector and how this will transform
the vector. This makes sure that some invalid operations are already discovered at compile
time. In case that this isn’t desired or the information about the vector isn’t known at
compile time there are the generic DataVec32 and
DataVec64 vectors available.
32bit and 64bit flavors trade performance and memory consumption against accuracy. 32bit vectors are roughly two times faster than 64bit vectors for most operations. But remember that you should benchmark first before you give away accuracy for performance unless however you are sure that 32bit accuracy is certainly good enough.
Fields
data: SThe underlying storage. self.len() should be called to find out how many
elements in data contain valid data.
Implementations
impl<S, T, N, D> DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]pub fn convolve_mat(
matrix: &[&Self],
impulse_response: &[&Self],
target: &mut [T]
) -> VoidResult[src]
pub fn convolve_mat(
matrix: &[&Self],
impulse_response: &[&Self],
target: &mut [T]
) -> VoidResult[src]Convolves a vector of vectors (in this lib also considered a matrix) with a vector
of impulse responses and stores the result in target.
Indicates whether or not the operations on this vector have been successful. Consider using the statically typed vector versions so that this check doesn’t need to be performed.
Trait Implementations
impl<S, T, N, D> ApproximatedOps<T> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: RealNumberSpace,
D: Domain, [src]
impl<S, T, N, D> ApproximatedOps<T> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: RealNumberSpace,
D: Domain, [src]Computes the principal value approximation of natural logarithm of every element in the vector. Read more
Calculates the natural exponential approximation for every vector element. Read more
Calculates the sine approximation of each element in radians. Read more
Calculates the cosine approximation of each element in radians Read more
Calculates the approximated logarithm to the given base for every vector element. Read more
Calculates the approximated exponential to the given base for every vector element. Read more
Raises every vector element to approximately a floating point power. Read more
impl<S, T, N, D> Clone for DspVec<S, T, N, D> where
S: ToSlice<T> + Clone,
T: RealNumber,
N: NumberSpace + Clone,
D: Domain + Clone, [src]
impl<S, T, N, D> Clone for DspVec<S, T, N, D> where
S: ToSlice<T> + Clone,
T: RealNumber,
N: NumberSpace + Clone,
D: Domain + Clone, [src]impl<S, T, N, D> ComplexIndex<Range<usize>> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]
impl<S, T, N, D> ComplexIndex<Range<usize>> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]impl<S, T, N, D> ComplexIndex<RangeFrom<usize>> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]
impl<S, T, N, D> ComplexIndex<RangeFrom<usize>> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]impl<S, T, N, D> ComplexIndex<RangeFull> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]
impl<S, T, N, D> ComplexIndex<RangeFull> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]impl<S, T, N, D> ComplexIndex<RangeTo<usize>> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]
impl<S, T, N, D> ComplexIndex<RangeTo<usize>> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]impl<S, T, N, D> ComplexIndex<usize> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]
impl<S, T, N, D> ComplexIndex<usize> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]impl<S, T, N, D> ComplexIndexMut<Range<usize>> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]
impl<S, T, N, D> ComplexIndexMut<Range<usize>> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]impl<S, T, N, D> ComplexIndexMut<RangeFrom<usize>> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]
impl<S, T, N, D> ComplexIndexMut<RangeFrom<usize>> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]impl<S, T, N, D> ComplexIndexMut<RangeFull> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]
impl<S, T, N, D> ComplexIndexMut<RangeFull> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]impl<S, T, N, D> ComplexIndexMut<RangeTo<usize>> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]
impl<S, T, N, D> ComplexIndexMut<RangeTo<usize>> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]impl<S, T, N, D> ComplexIndexMut<usize> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]
impl<S, T, N, D> ComplexIndexMut<usize> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]impl<S, T, N, D> ComplexOps<T> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]
impl<S, T, N, D> ComplexOps<T> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]Multiplies each vector element with exp(j*(a*idx*self.delta() + b))
where a and b are arguments and idx is the index of the data points
in the vector ranging from 0 to self.points() - 1. j is the imaginary number and
exp the exponential function. Read more
impl<S, T, N, NR, D, O, DO> ComplexToRealGetterOps<O, T, NR, DO> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ToRealResult,
O: Vector<T> + GetMetaData<T, NR, DO> + FloatIndex<Range<usize>, Output = [T]> + FloatIndexMut<Range<usize>>,
S: ToSlice<T>,
T: RealNumber,
N: ComplexNumberSpace,
NR: RealNumberSpace,
D: Domain,
DO: PosEq<D> + Domain, [src]
impl<S, T, N, NR, D, O, DO> ComplexToRealGetterOps<O, T, NR, DO> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ToRealResult,
O: Vector<T> + GetMetaData<T, NR, DO> + FloatIndex<Range<usize>, Output = [T]> + FloatIndexMut<Range<usize>>,
S: ToSlice<T>,
T: RealNumber,
N: ComplexNumberSpace,
NR: RealNumberSpace,
D: Domain,
DO: PosEq<D> + Domain, [src]Copies all real elements into the given vector. Read more
Copies all imag elements into the given vector. Read more
Copies the absolute value or magnitude of all vector elements into the given target vector. Read more
Copies the absolute value squared or magnitude squared of all vector elements into the given target vector. Read more
Copies the phase of all elements in [rad] into the given vector. Read more
Gets the real and imaginary parts and stores them in the given vectors.
See also get_phase and
get_complex_abs for further
information. Read more
impl<S, T, N, NR, D, O, DO> ComplexToRealSetterOps<O, T, NR, DO> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ToRealResult,
O: FloatIndex<Range<usize>, Output = [T]> + Vector<T> + GetMetaData<T, NR, DO>,
S: ToSliceMut<T> + Resize,
T: RealNumber,
N: ComplexNumberSpace,
NR: RealNumberSpace,
D: Domain,
DO: PosEq<D> + Domain, [src]
impl<S, T, N, NR, D, O, DO> ComplexToRealSetterOps<O, T, NR, DO> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ToRealResult,
O: FloatIndex<Range<usize>, Output = [T]> + Vector<T> + GetMetaData<T, NR, DO>,
S: ToSliceMut<T> + Resize,
T: RealNumber,
N: ComplexNumberSpace,
NR: RealNumberSpace,
D: Domain,
DO: PosEq<D> + Domain, [src]Overrides the self vectors data with the real and imaginary data in the given vectors.
real and imag must have the same size. Read more
Overrides the self vectors data with the magnitude and phase data in the given vectors.
Note that self vector will immediately convert the data into a real and
imaginary representation of the complex numbers which is its default format.
mag and phase must have the same size. Read more
impl<S, T, N, D> ComplexToRealTransformsOps<T> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ToRealResult,
<DspVec<S, T, N, D> as ToRealResult>::RealResult: RededicateForceOps<DspVec<S, T, N, D>>,
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]
impl<S, T, N, D> ComplexToRealTransformsOps<T> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ToRealResult,
<DspVec<S, T, N, D> as ToRealResult>::RealResult: RededicateForceOps<DspVec<S, T, N, D>>,
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]impl<S, T, N, D> ComplexToRealTransformsOpsBuffered<S, T> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ToRealResult,
<DspVec<S, T, N, D> as ToRealResult>::RealResult: RededicateForceOps<DspVec<S, T, N, D>>,
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]
impl<S, T, N, D> ComplexToRealTransformsOpsBuffered<S, T> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ToRealResult,
<DspVec<S, T, N, D> as ToRealResult>::RealResult: RededicateForceOps<DspVec<S, T, N, D>>,
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]fn magnitude_b<B>(self, buffer: &mut B) -> Self::RealResult where
B: for<'a> Buffer<'a, S, T>, [src]
fn magnitude_b<B>(self, buffer: &mut B) -> Self::RealResult where
B: for<'a> Buffer<'a, S, T>, [src]Gets the absolute value, magnitude or norm of all vector elements. Read more
fn magnitude_squared_b<B>(self, buffer: &mut B) -> Self::RealResult where
B: for<'a> Buffer<'a, S, T>, [src]
fn magnitude_squared_b<B>(self, buffer: &mut B) -> Self::RealResult where
B: for<'a> Buffer<'a, S, T>, [src]Gets the square root of the absolute value of all vector elements. Read more
Gets all real elements. Read more
Gets all imag elements. Read more
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>, [src]Convolves self with the convolution function impulse_response.
For performance consider to
to use FrequencyMultiplication instead of this operation depending on len. Read more
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>, [src]Convolves self with the convolution function impulse_response.
For performance consider to
to use FrequencyMultiplication instead of this operation depending on len. Read more
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
S: ToSliceMut<T>,
SO: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: TimeDomain,
DspVec<S, T, N, D>: TimeToFrequencyDomainOperations<S, T> + Clone,
DspVec<SO, T, N, D>: TimeToFrequencyDomainOperations<SO, T> + Clone,
NO: PosEq<N> + NumberSpace,
DO: TimeDomain, [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
S: ToSliceMut<T>,
SO: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: TimeDomain,
DspVec<S, T, N, D>: TimeToFrequencyDomainOperations<S, T> + Clone,
DspVec<SO, T, N, D>: TimeToFrequencyDomainOperations<SO, T> + Clone,
NO: PosEq<N> + NumberSpace,
DO: TimeDomain, [src]fn convolve_signal<B>(
&mut self,
buffer: &mut B,
impulse_response: &DspVec<SO, T, NO, DO>
) -> VoidResult where
B: for<'a> Buffer<'a, S, T>, [src]
fn convolve_signal<B>(
&mut self,
buffer: &mut B,
impulse_response: &DspVec<SO, T, NO, DO>
) -> VoidResult where
B: for<'a> Buffer<'a, S, T>, [src]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. Read more
impl<S, T, N, D> CrossCorrelationArgumentOps<S, T> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ToFreqResult + TimeToFrequencyDomainOperations<S, T>,
<DspVec<S, T, N, D> as ToFreqResult>::FreqResult: FrequencyDomainOperations<S, T> + ComplexOps<T>,
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: TimeDomain, [src]
impl<S, T, N, D> CrossCorrelationArgumentOps<S, T> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ToFreqResult + TimeToFrequencyDomainOperations<S, T>,
<DspVec<S, T, N, D> as ToFreqResult>::FreqResult: FrequencyDomainOperations<S, T> + ComplexOps<T>,
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: TimeDomain, [src]fn prepare_argument<B>(self, buffer: &mut B) -> Self::FreqResult where
B: for<'a> Buffer<'a, S, T>, [src]
fn prepare_argument<B>(self, buffer: &mut B) -> Self::FreqResult where
B: for<'a> Buffer<'a, S, T>, [src]Prepares an argument to be used for convolution. Preparing an argument includes two steps: Read more
fn prepare_argument_padded<B>(self, buffer: &mut B) -> Self::FreqResult where
B: for<'a> Buffer<'a, S, T>, [src]
fn prepare_argument_padded<B>(self, buffer: &mut B) -> Self::FreqResult where
B: for<'a> Buffer<'a, S, T>, [src]Prepares an argument to be used for convolution. The argument is zero padded to
length of 2 * self.points() - 1
and then the same operations are performed as described for prepare_argument. Read more
impl<S, T, N, D, DF, O, NO> CrossCorrelationOps<O, S, T, NO, DF> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ScaleOps<T>,
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: TimeDomain,
DF: FrequencyDomain,
O: Vector<T> + GetMetaData<T, NO, DF>,
NO: PosEq<N> + NumberSpace, [src]
impl<S, T, N, D, DF, O, NO> CrossCorrelationOps<O, S, T, NO, DF> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ScaleOps<T>,
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: TimeDomain,
DF: FrequencyDomain,
O: Vector<T> + GetMetaData<T, NO, DF>,
NO: PosEq<N> + NumberSpace, [src]Calculates the correlation between self and other. other
needs to be a time vector which
went through one of the prepare functions prepare_argument or prepare_argument_padded.
See also the trait description for more details. Read more
impl<S, T, N, D> Debug for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
D: Domain,
N: NumberSpace, [src]
impl<S, T, N, D> Debug for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
D: Domain,
N: NumberSpace, [src]impl<S, T, N, D> DiffSumOps for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> DiffSumOps for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]impl<S, O, T, N, D, NO, DO> DotProductOps<O, Complex<T>, T, NO, DO> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain,
O: Vector<T> + GetMetaData<T, NO, DO>,
NO: PosEq<N> + NumberSpace,
DO: PosEq<D> + Domain, [src]
impl<S, O, T, N, D, NO, DO> DotProductOps<O, Complex<T>, T, NO, DO> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain,
O: Vector<T> + GetMetaData<T, NO, DO>,
NO: PosEq<N> + NumberSpace,
DO: PosEq<D> + Domain, [src]type Output = ScalarResult<Complex<T>>Calculates the dot product of self and factor. Self and factor remain unchanged. Read more
impl<S, O, T, N, D, NO, DO> DotProductOps<O, T, T, NO, DO> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: RealNumberSpace,
D: Domain,
O: Vector<T> + GetMetaData<T, NO, DO>,
NO: PosEq<N> + NumberSpace,
DO: PosEq<D> + Domain, [src]
impl<S, O, T, N, D, NO, DO> DotProductOps<O, T, T, NO, DO> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: RealNumberSpace,
D: Domain,
O: Vector<T> + GetMetaData<T, NO, DO>,
NO: PosEq<N> + NumberSpace,
DO: PosEq<D> + Domain, [src]type Output = ScalarResult<T>Calculates the dot product of self and factor. Self and factor remain unchanged. Read more
impl<S, T, N, D, O, NO, DO> ElementaryOps<O, T, NO, DO> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain,
O: Vector<T> + GetMetaData<T, NO, DO>,
NO: PosEq<N> + NumberSpace,
DO: PosEq<D> + Domain, [src]
impl<S, T, N, D, O, NO, DO> ElementaryOps<O, T, NO, DO> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain,
O: Vector<T> + GetMetaData<T, NO, DO>,
NO: PosEq<N> + NumberSpace,
DO: PosEq<D> + Domain, [src]Calculates the sum of self + summand. It consumes self and returns the result. Read more
Calculates the difference of self - subtrahend. It consumes self and returns the result. Read more
Calculates the product of self * factor. It consumes self and returns the result. Read more
Calculates the quotient of self / summand. It consumes self and returns the result. Read more
impl<S, T, N, D, O, NO, DO> ElementaryWrapAroundOps<O, T, NO, DO> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain,
O: Vector<T> + GetMetaData<T, NO, DO>,
NO: PosEq<N> + NumberSpace,
DO: PosEq<D> + Domain, [src]
impl<S, T, N, D, O, NO, DO> ElementaryWrapAroundOps<O, T, NO, DO> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain,
O: Vector<T> + GetMetaData<T, NO, DO>,
NO: PosEq<N> + NumberSpace,
DO: PosEq<D> + Domain, [src]Calculates the sum of self + summand. summand may be smaller than self as long
as self.len() % summand.len() == 0. THe result is the same as it would be if
you would repeat summand until it has the same length as self.
It consumes self and returns the result. Read more
Calculates the sum of self - subtrahend. subtrahend may be smaller than self as long
as self.len() % subtrahend.len() == 0. THe result is the same as it would be if
you would repeat subtrahend until it has the same length as self.
It consumes self and returns the result. Read more
Calculates the sum of self - factor. factor may be smaller than self as long
as self.len() % factor.len() == 0. THe result is the same as it would be if
you would repeat factor until it has the same length as self.
It consumes self and returns the result. Read more
Calculates the sum of self - divisor. divisor may be smaller than self as long
as self.len() % divisor.len() == 0. THe result is the same as it would be if
you would repeat divisor until it has the same length as self.
It consumes self and returns the result. Read more
impl<S, T, N, D> FloatIndex<Range<usize>> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> FloatIndex<Range<usize>> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]impl<S, T, N, D> FloatIndex<RangeFrom<usize>> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> FloatIndex<RangeFrom<usize>> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]impl<S, T, N, D> FloatIndex<RangeFull> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> FloatIndex<RangeFull> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]impl<S, T, N, D> FloatIndex<RangeTo<usize>> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> FloatIndex<RangeTo<usize>> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]impl<S, T, N, D> FloatIndex<usize> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> FloatIndex<usize> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]impl<S, T, N, D> FloatIndexMut<Range<usize>> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> FloatIndexMut<Range<usize>> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]impl<S, T, N, D> FloatIndexMut<RangeFrom<usize>> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> FloatIndexMut<RangeFrom<usize>> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]impl<S, T, N, D> FloatIndexMut<RangeFull> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> FloatIndexMut<RangeFull> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]impl<S, T, N, D> FloatIndexMut<RangeTo<usize>> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> FloatIndexMut<RangeTo<usize>> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]impl<S, T, N, D> FloatIndexMut<usize> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> FloatIndexMut<usize> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]impl<S, T, N, D> FrequencyDomainOperations<S, T> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ToTimeResult,
<DspVec<S, T, N, D> as ToTimeResult>::TimeResult: RededicateForceOps<DspVec<S, T, N, D>>,
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: FrequencyDomain, [src]
impl<S, T, N, D> FrequencyDomainOperations<S, T> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ToTimeResult,
<DspVec<S, T, N, D> as ToTimeResult>::TimeResult: RededicateForceOps<DspVec<S, T, N, D>>,
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: FrequencyDomain, [src]This function mirrors the spectrum vector to transform a symmetric spectrum into a full spectrum with the DC element at index 0 (no FFT shift/swap halves). Read more
Swaps vector halves before an Inverse Fourier Transformation.
impl<'a, S, T, N, D> FrequencyMultiplication<'a, S, T, &'a (dyn ComplexFrequencyResponse<T> + 'a)> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: FrequencyDomain, [src]
impl<'a, S, T, N, D> FrequencyMultiplication<'a, S, T, &'a (dyn ComplexFrequencyResponse<T> + 'a)> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: FrequencyDomain, [src]fn multiply_frequency_response(
&mut self,
frequency_response: &dyn ComplexFrequencyResponse<T>,
ratio: T
)[src]
fn multiply_frequency_response(
&mut self,
frequency_response: &dyn ComplexFrequencyResponse<T>,
ratio: T
)[src]Multiplies self with the frequency response function frequency_response. Read more
impl<'a, S, T, N, D> FrequencyMultiplication<'a, S, T, &'a (dyn RealFrequencyResponse<T> + 'a)> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: FrequencyDomain, [src]
impl<'a, S, T, N, D> FrequencyMultiplication<'a, S, T, &'a (dyn RealFrequencyResponse<T> + 'a)> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: FrequencyDomain, [src]fn multiply_frequency_response(
&mut self,
frequency_response: &dyn RealFrequencyResponse<T>,
ratio: T
)[src]
fn multiply_frequency_response(
&mut self,
frequency_response: &dyn RealFrequencyResponse<T>,
ratio: T
)[src]Multiplies self with the frequency response function frequency_response. Read more
impl<S, T, N, D> FrequencyToTimeDomainOperations<S, T> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ToTimeResult,
<DspVec<S, T, N, D> as ToTimeResult>::TimeResult: RededicateForceOps<DspVec<S, T, N, D>> + TimeDomainOperations<S, T>,
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: FrequencyDomain, [src]
impl<S, T, N, D> FrequencyToTimeDomainOperations<S, T> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ToTimeResult,
<DspVec<S, T, N, D> as ToTimeResult>::TimeResult: RededicateForceOps<DspVec<S, T, N, D>> + TimeDomainOperations<S, T>,
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: FrequencyDomain, [src]Performs an Inverse Fast Fourier Transformation transforming a frequency domain vector into a time domain vector. Read more
Performs an Inverse Fast Fourier Transformation transforming a frequency domain vector into a time domain vector. Read more
fn windowed_ifft<B>(
self,
buffer: &mut B,
window: &dyn WindowFunction<T>
) -> Self::TimeResult where
B: for<'a> Buffer<'a, S, T>, [src]
fn windowed_ifft<B>(
self,
buffer: &mut B,
window: &dyn WindowFunction<T>
) -> Self::TimeResult where
B: for<'a> Buffer<'a, S, T>, [src]Performs an Inverse Fast Fourier Transformation transforming a frequency domain vector into a time domain vector and removes the FFT window. Read more
impl<S, T, D> FromVector<T> for DspVec<S, T, Real, D> where
S: ToSlice<T>,
T: RealNumber,
D: Domain, [src]
impl<S, T, D> FromVector<T> for DspVec<S, T, Real, D> where
S: ToSlice<T>,
T: RealNumber,
D: Domain, [src]impl<'a, T, D> FromVector<T> for DspVec<&'a [T], T, Complex, D> where
T: RealNumber,
D: Domain, [src]
impl<'a, T, D> FromVector<T> for DspVec<&'a [T], T, Complex, D> where
T: RealNumber,
D: Domain, [src]impl<'a, T, D> FromVector<T> for DspVec<&'a mut [T], T, Complex, D> where
T: RealNumber,
D: Domain, [src]
impl<'a, T, D> FromVector<T> for DspVec<&'a mut [T], T, Complex, D> where
T: RealNumber,
D: Domain, [src]impl<S, T, N, D> FromVectorFloat<T> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> FromVectorFloat<T> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]type Output = S
type Output = SType of the underlying storage of a vector.
Gets the underlying storage and the number of elements which
contain valid data. In case of complex vectors the values are returned real-imag pairs.
Refer to Into or FromVector
for a method which returns the data of complex vectors in a different manner. Read more
impl<S, T, N, D> GetMetaData<T, N, D> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> GetMetaData<T, N, D> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]Gets a copy of the vector meta data. This can be used to create new types with the same meta data. Read more
impl<S, T, D> Index<Range<usize>> for DspVec<S, T, ComplexSpace, D> where
S: ToSlice<T>,
T: RealNumber,
D: Domain, [src]
impl<S, T, D> Index<Range<usize>> for DspVec<S, T, ComplexSpace, D> where
S: ToSlice<T>,
T: RealNumber,
D: Domain, [src]impl<S, T, D> Index<RangeFrom<usize>> for DspVec<S, T, ComplexSpace, D> where
S: ToSlice<T>,
T: RealNumber,
D: Domain, [src]
impl<S, T, D> Index<RangeFrom<usize>> for DspVec<S, T, ComplexSpace, D> where
S: ToSlice<T>,
T: RealNumber,
D: Domain, [src]impl<S, T, D> Index<RangeFull> for DspVec<S, T, ComplexSpace, D> where
S: ToSlice<T>,
T: RealNumber,
D: Domain, [src]
impl<S, T, D> Index<RangeFull> for DspVec<S, T, ComplexSpace, D> where
S: ToSlice<T>,
T: RealNumber,
D: Domain, [src]impl<S, T, D> Index<RangeTo<usize>> for DspVec<S, T, ComplexSpace, D> where
S: ToSlice<T>,
T: RealNumber,
D: Domain, [src]
impl<S, T, D> Index<RangeTo<usize>> for DspVec<S, T, ComplexSpace, D> where
S: ToSlice<T>,
T: RealNumber,
D: Domain, [src]impl<S, T, D> Index<usize> for DspVec<S, T, ComplexSpace, D> where
S: ToSlice<T>,
T: RealNumber,
D: Domain, [src]
impl<S, T, D> Index<usize> for DspVec<S, T, ComplexSpace, D> where
S: ToSlice<T>,
T: RealNumber,
D: Domain, [src]impl<S, T, D> IndexMut<Range<usize>> for DspVec<S, T, RealSpace, D> where
S: ToSliceMut<T>,
T: RealNumber,
D: Domain, [src]
impl<S, T, D> IndexMut<Range<usize>> for DspVec<S, T, RealSpace, D> where
S: ToSliceMut<T>,
T: RealNumber,
D: Domain, [src]impl<S, T, D> IndexMut<Range<usize>> for DspVec<S, T, ComplexSpace, D> where
S: ToSliceMut<T>,
T: RealNumber,
D: Domain, [src]
impl<S, T, D> IndexMut<Range<usize>> for DspVec<S, T, ComplexSpace, D> where
S: ToSliceMut<T>,
T: RealNumber,
D: Domain, [src]impl<S, T, D> IndexMut<RangeFrom<usize>> for DspVec<S, T, RealSpace, D> where
S: ToSliceMut<T>,
T: RealNumber,
D: Domain, [src]
impl<S, T, D> IndexMut<RangeFrom<usize>> for DspVec<S, T, RealSpace, D> where
S: ToSliceMut<T>,
T: RealNumber,
D: Domain, [src]impl<S, T, D> IndexMut<RangeFrom<usize>> for DspVec<S, T, ComplexSpace, D> where
S: ToSliceMut<T>,
T: RealNumber,
D: Domain, [src]
impl<S, T, D> IndexMut<RangeFrom<usize>> for DspVec<S, T, ComplexSpace, D> where
S: ToSliceMut<T>,
T: RealNumber,
D: Domain, [src]impl<S, T, D> IndexMut<RangeFull> for DspVec<S, T, RealSpace, D> where
S: ToSliceMut<T>,
T: RealNumber,
D: Domain, [src]
impl<S, T, D> IndexMut<RangeFull> for DspVec<S, T, RealSpace, D> where
S: ToSliceMut<T>,
T: RealNumber,
D: Domain, [src]impl<S, T, D> IndexMut<RangeFull> for DspVec<S, T, ComplexSpace, D> where
S: ToSliceMut<T>,
T: RealNumber,
D: Domain, [src]
impl<S, T, D> IndexMut<RangeFull> for DspVec<S, T, ComplexSpace, D> where
S: ToSliceMut<T>,
T: RealNumber,
D: Domain, [src]impl<S, T, D> IndexMut<RangeTo<usize>> for DspVec<S, T, RealSpace, D> where
S: ToSliceMut<T>,
T: RealNumber,
D: Domain, [src]
impl<S, T, D> IndexMut<RangeTo<usize>> for DspVec<S, T, RealSpace, D> where
S: ToSliceMut<T>,
T: RealNumber,
D: Domain, [src]impl<S, T, D> IndexMut<RangeTo<usize>> for DspVec<S, T, ComplexSpace, D> where
S: ToSliceMut<T>,
T: RealNumber,
D: Domain, [src]
impl<S, T, D> IndexMut<RangeTo<usize>> for DspVec<S, T, ComplexSpace, D> where
S: ToSliceMut<T>,
T: RealNumber,
D: Domain, [src]impl<S, T, D> IndexMut<usize> for DspVec<S, T, RealSpace, D> where
S: ToSliceMut<T>,
T: RealNumber,
D: Domain, [src]
impl<S, T, D> IndexMut<usize> for DspVec<S, T, RealSpace, D> where
S: ToSliceMut<T>,
T: RealNumber,
D: Domain, [src]impl<S, T, D> IndexMut<usize> for DspVec<S, T, ComplexSpace, D> where
S: ToSliceMut<T>,
T: RealNumber,
D: Domain, [src]
impl<S, T, D> IndexMut<usize> for DspVec<S, T, ComplexSpace, D> where
S: ToSliceMut<T>,
T: RealNumber,
D: Domain, [src]impl<S, T, N, D> InsertZerosOps<T> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> InsertZerosOps<T> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]Appends zeros add the end of the vector until the vector has the size given
in the points argument.
If points smaller than the self.len() then this operation won’t do anything, however
in future it will raise an error. Read more
Interleaves zeros factor - 1times after every vector element, so that the resulting
vector will have a length of self.len() * factor. Read more
impl<S, T, N, D> InsertZerosOpsBuffered<S, T> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> InsertZerosOpsBuffered<S, T> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]fn zero_pad_b<B>(
&mut self,
buffer: &mut B,
points: usize,
option: PaddingOption
) -> VoidResult where
B: for<'a> Buffer<'a, S, T>, [src]
fn zero_pad_b<B>(
&mut self,
buffer: &mut B,
points: usize,
option: PaddingOption
) -> VoidResult where
B: for<'a> Buffer<'a, S, T>, [src]Appends zeros add the end of the vector until the vector has the size given in the
points argument.
If points smaller than the self.len() then this operation will return an error. Read more
impl<S, T, N, D> InterpolationOps<S, T> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: InsertZerosOpsBuffered<S, T> + ScaleOps<T> + ResizeBufferedOps<S, T>,
S: ToSliceMut<T> + ToComplexVector<S, T> + ToDspVector<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> InterpolationOps<S, T> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: InsertZerosOpsBuffered<S, T> + ScaleOps<T> + ResizeBufferedOps<S, T>,
S: ToSliceMut<T> + ToComplexVector<S, T> + ToDspVector<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]fn interpolatef<B>(
&mut self,
buffer: &mut B,
function: &dyn RealImpulseResponse<T>,
interpolation_factor: T,
delay: T,
conv_len: usize
) where
B: for<'a> Buffer<'a, S, T>, [src]
fn interpolatef<B>(
&mut self,
buffer: &mut B,
function: &dyn RealImpulseResponse<T>,
interpolation_factor: T,
delay: T,
conv_len: usize
) where
B: for<'a> Buffer<'a, S, T>, [src]Interpolates self with the convolution function function by the real value
interpolation_factor. InterpolationOps is done in time domain and the argument
conv_len can be used to balance accuracy and computational performance.
A delay can be used to delay or phase shift the vector.
The delay considers self.delta(). Read more
fn interpolatei<B>(
&mut self,
buffer: &mut B,
function: &dyn RealFrequencyResponse<T>,
interpolation_factor: u32
) -> VoidResult where
B: for<'a> Buffer<'a, S, T>, [src]
fn interpolatei<B>(
&mut self,
buffer: &mut B,
function: &dyn RealFrequencyResponse<T>,
interpolation_factor: u32
) -> VoidResult where
B: for<'a> Buffer<'a, S, T>, [src]Interpolates self with the convolution function function by the integer value
interpolation_factor. InterpolationOps is done in in frequency domain. Read more
Interpolates the signal in frequency domain by padding it with zeros. This function preserves the shape of the signal in frequency domain. Read more
fn interpolate<B>(
&mut self,
buffer: &mut B,
function: Option<&dyn RealFrequencyResponse<T>>,
dest_points: usize,
delay: T
) -> VoidResult where
B: for<'a> Buffer<'a, S, T>, [src]
fn interpolate<B>(
&mut self,
buffer: &mut B,
function: Option<&dyn RealFrequencyResponse<T>>,
dest_points: usize,
delay: T
) -> VoidResult where
B: for<'a> Buffer<'a, S, T>, [src]Interpolates the signal in frequency domain by padding it with zeros.
impl<S, T, N, D, R> MapAggregateOps<Complex<T>, R> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain,
R: Send, [src]
impl<S, T, N, D, R> MapAggregateOps<Complex<T>, R> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain,
R: Send, [src]type Output = ScalarResult<R>Transforms all vector elements using the function map and then aggregates
all the results with aggregate. aggregate must be a commutativity and associativity;
that’s because there is no guarantee that the numbers will
be aggregated in any deterministic order. Read more
impl<S, T, N, D, R> MapAggregateOps<T, R> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: RealNumberSpace,
D: Domain,
R: Send, [src]
impl<S, T, N, D, R> MapAggregateOps<T, R> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: RealNumberSpace,
D: Domain,
R: Send, [src]type Output = ScalarResult<R>Transforms all vector elements using the function map and then aggregates
all the results with aggregate. aggregate must be a commutativity and associativity;
that’s because there is no guarantee that the numbers will
be aggregated in any deterministic order. Read more
impl<S, T, N, D> MapInplaceOps<Complex<T>> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]
impl<S, T, N, D> MapInplaceOps<Complex<T>> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]impl<S, T, N, D> MapInplaceOps<T> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: RealNumberSpace,
D: Domain, [src]
impl<S, T, N, D> MapInplaceOps<T> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: RealNumberSpace,
D: Domain, [src]impl<S, T, N, D> MergeOps for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> MergeOps for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]impl<S, T, N, D> MetaData for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> MetaData for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]impl<S, T, N, D> ModuloOps<T> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: RealNumberSpace,
D: Domain, [src]
impl<S, T, N, D> ModuloOps<T> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: RealNumberSpace,
D: Domain, [src]Each value in the vector is dividable by the divisor and the remainder is stored in the resulting vector. This the same a modulo operation or to phase wrapping. Read more
impl<S, T, N, D> OffsetOps<Complex<T>> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]
impl<S, T, N, D> OffsetOps<Complex<T>> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]impl<S, T, N, D> OffsetOps<T> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> OffsetOps<T> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]impl<S, T, N, D> PowerOps<T> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> PowerOps<T> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]impl<S, O, T, N, D, NO, DO> PreciseDotProductOps<O, Complex<T>, T, NO, DO> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain,
O: Vector<T> + GetMetaData<T, NO, DO>,
NO: PosEq<N> + NumberSpace,
DO: PosEq<D> + Domain, [src]
impl<S, O, T, N, D, NO, DO> PreciseDotProductOps<O, Complex<T>, T, NO, DO> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain,
O: Vector<T> + GetMetaData<T, NO, DO>,
NO: PosEq<N> + NumberSpace,
DO: PosEq<D> + Domain, [src]type Output = ScalarResult<Complex<T>>Calculates the dot product of self and factor using a more precise but slower algorithm. Self and factor remain unchanged. Read more
impl<S, O, T, N, D, NO, DO> PreciseDotProductOps<O, T, T, NO, DO> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: RealNumberSpace,
D: Domain,
O: Vector<T> + GetMetaData<T, NO, DO>,
NO: PosEq<N> + NumberSpace,
DO: PosEq<D> + Domain, [src]
impl<S, O, T, N, D, NO, DO> PreciseDotProductOps<O, T, T, NO, DO> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: RealNumberSpace,
D: Domain,
O: Vector<T> + GetMetaData<T, NO, DO>,
NO: PosEq<N> + NumberSpace,
DO: PosEq<D> + Domain, [src]type Output = ScalarResult<T>Calculates the dot product of self and factor using a more precise but slower algorithm. Self and factor remain unchanged. Read more
impl<S, N, D> PreciseStatisticsOps<Complex<f64>> for DspVec<S, f32, N, D> where
S: ToSlice<f32>,
N: ComplexNumberSpace,
D: Domain, [src]
impl<S, N, D> PreciseStatisticsOps<Complex<f64>> for DspVec<S, f32, N, D> where
S: ToSlice<f32>,
N: ComplexNumberSpace,
D: Domain, [src]type Result = Statistics<Complex<f64>>Calculates the statistics of the data contained in the vector using a more precise but slower algorithm. Read more
impl<S, N, D> PreciseStatisticsOps<Complex<f64>> for DspVec<S, f64, N, D> where
S: ToSlice<f64>,
N: ComplexNumberSpace,
D: Domain, [src]
impl<S, N, D> PreciseStatisticsOps<Complex<f64>> for DspVec<S, f64, N, D> where
S: ToSlice<f64>,
N: ComplexNumberSpace,
D: Domain, [src]type Result = Statistics<Complex<f64>>Calculates the statistics of the data contained in the vector using a more precise but slower algorithm. Read more
impl<S, N, D> PreciseStatisticsOps<f64> for DspVec<S, f32, N, D> where
S: ToSlice<f32>,
N: RealNumberSpace,
D: Domain, [src]
impl<S, N, D> PreciseStatisticsOps<f64> for DspVec<S, f32, N, D> where
S: ToSlice<f32>,
N: RealNumberSpace,
D: Domain, [src]type Result = Statistics<f64>Calculates the statistics of the data contained in the vector using a more precise but slower algorithm. Read more
impl<S, N, D> PreciseStatisticsOps<f64> for DspVec<S, f64, N, D> where
S: ToSlice<f64>,
N: RealNumberSpace,
D: Domain, [src]
impl<S, N, D> PreciseStatisticsOps<f64> for DspVec<S, f64, N, D> where
S: ToSlice<f64>,
N: RealNumberSpace,
D: Domain, [src]type Result = Statistics<f64>Calculates the statistics of the data contained in the vector using a more precise but slower algorithm. Read more
impl<S, N, D> PreciseStatisticsSplitOps<Complex<f64>> for DspVec<S, f32, N, D> where
S: ToSlice<f32>,
N: ComplexNumberSpace,
D: Domain, [src]
impl<S, N, D> PreciseStatisticsSplitOps<Complex<f64>> for DspVec<S, f32, N, D> where
S: ToSlice<f32>,
N: ComplexNumberSpace,
D: Domain, [src]type Result = StatsVec<Statistics<Complex<f64>>>fn statistics_split_prec(
&self,
len: usize
) -> ScalarResult<StatsVec<Statistics<Complex<f64>>>>[src]
fn statistics_split_prec(
&self,
len: usize
) -> ScalarResult<StatsVec<Statistics<Complex<f64>>>>[src]Calculates the statistics of the data contained in the vector as if the vector would
have been split into len pieces
using a more precise but slower algorithm. self.len should be dividable by
len without a remainder,
but this isn’t enforced by the implementation.
For implementation reasons len <= 16 must be true. Read more
impl<S, N, D> PreciseStatisticsSplitOps<Complex<f64>> for DspVec<S, f64, N, D> where
S: ToSlice<f64>,
N: ComplexNumberSpace,
D: Domain, [src]
impl<S, N, D> PreciseStatisticsSplitOps<Complex<f64>> for DspVec<S, f64, N, D> where
S: ToSlice<f64>,
N: ComplexNumberSpace,
D: Domain, [src]type Result = StatsVec<Statistics<Complex<f64>>>fn statistics_split_prec(
&self,
len: usize
) -> ScalarResult<StatsVec<Statistics<Complex<f64>>>>[src]
fn statistics_split_prec(
&self,
len: usize
) -> ScalarResult<StatsVec<Statistics<Complex<f64>>>>[src]Calculates the statistics of the data contained in the vector as if the vector would
have been split into len pieces
using a more precise but slower algorithm. self.len should be dividable by
len without a remainder,
but this isn’t enforced by the implementation.
For implementation reasons len <= 16 must be true. Read more
impl<S, N, D> PreciseStatisticsSplitOps<f64> for DspVec<S, f32, N, D> where
S: ToSlice<f32>,
N: RealNumberSpace,
D: Domain, [src]
impl<S, N, D> PreciseStatisticsSplitOps<f64> for DspVec<S, f32, N, D> where
S: ToSlice<f32>,
N: RealNumberSpace,
D: Domain, [src]type Result = StatsVec<Statistics<f64>>Calculates the statistics of the data contained in the vector as if the vector would
have been split into len pieces
using a more precise but slower algorithm. self.len should be dividable by
len without a remainder,
but this isn’t enforced by the implementation.
For implementation reasons len <= 16 must be true. Read more
impl<S, N, D> PreciseStatisticsSplitOps<f64> for DspVec<S, f64, N, D> where
S: ToSlice<f64>,
N: RealNumberSpace,
D: Domain, [src]
impl<S, N, D> PreciseStatisticsSplitOps<f64> for DspVec<S, f64, N, D> where
S: ToSlice<f64>,
N: RealNumberSpace,
D: Domain, [src]type Result = StatsVec<Statistics<f64>>Calculates the statistics of the data contained in the vector as if the vector would
have been split into len pieces
using a more precise but slower algorithm. self.len should be dividable by
len without a remainder,
but this isn’t enforced by the implementation.
For implementation reasons len <= 16 must be true. Read more
impl<S, N, D> PreciseSumOps<Complex<f64>> for DspVec<S, f32, N, D> where
S: ToSlice<f32>,
N: ComplexNumberSpace,
D: Domain, [src]
impl<S, N, D> PreciseSumOps<Complex<f64>> for DspVec<S, f32, N, D> where
S: ToSlice<f32>,
N: ComplexNumberSpace,
D: Domain, [src]impl<S, N, D> PreciseSumOps<Complex<f64>> for DspVec<S, f64, N, D> where
S: ToSlice<f64>,
N: ComplexNumberSpace,
D: Domain, [src]
impl<S, N, D> PreciseSumOps<Complex<f64>> for DspVec<S, f64, N, D> where
S: ToSlice<f64>,
N: ComplexNumberSpace,
D: Domain, [src]impl<S, N, D> PreciseSumOps<f64> for DspVec<S, f32, N, D> where
S: ToSlice<f32>,
N: RealNumberSpace,
D: Domain, [src]
impl<S, N, D> PreciseSumOps<f64> for DspVec<S, f32, N, D> where
S: ToSlice<f32>,
N: RealNumberSpace,
D: Domain, [src]impl<S, N, D> PreciseSumOps<f64> for DspVec<S, f64, N, D> where
S: ToSlice<f64>,
N: RealNumberSpace,
D: Domain, [src]
impl<S, N, D> PreciseSumOps<f64> for DspVec<S, f64, N, D> where
S: ToSlice<f64>,
N: RealNumberSpace,
D: Domain, [src]impl<S, T, N, D> RealInterpolationOps<S, T> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: RealNumberSpace,
D: Domain, [src]
impl<S, T, N, D> RealInterpolationOps<S, T> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: RealNumberSpace,
D: Domain, [src]fn interpolate_lin<B>(
&mut self,
buffer: &mut B,
interpolation_factor: T,
delay: T
) where
B: for<'a> Buffer<'a, S, T>, [src]
fn interpolate_lin<B>(
&mut self,
buffer: &mut B,
interpolation_factor: T,
delay: T
) where
B: for<'a> Buffer<'a, S, T>, [src]Linear interpolation between samples.
fn interpolate_hermite<B>(
&mut self,
buffer: &mut B,
interpolation_factor: T,
delay: T
) where
B: for<'a> Buffer<'a, S, T>, [src]
fn interpolate_hermite<B>(
&mut self,
buffer: &mut B,
interpolation_factor: T,
delay: T
) where
B: for<'a> Buffer<'a, S, T>, [src]Piecewise cubic hermite interpolation between samples.
impl<S, T, N, D> RealOps for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: RealNumberSpace,
D: Domain, [src]
impl<S, T, N, D> RealOps for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: RealNumberSpace,
D: Domain, [src]impl<S, T, N, D> RealToComplexTransformsOps<T> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ToComplexResult + InsertZerosOps<T>,
<DspVec<S, T, N, D> as ToComplexResult>::ComplexResult: RededicateForceOps<DspVec<S, T, N, D>>,
S: ToSliceMut<T>,
T: RealNumber,
N: RealNumberSpace,
D: Domain, [src]
impl<S, T, N, D> RealToComplexTransformsOps<T> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ToComplexResult + InsertZerosOps<T>,
<DspVec<S, T, N, D> as ToComplexResult>::ComplexResult: RededicateForceOps<DspVec<S, T, N, D>>,
S: ToSliceMut<T>,
T: RealNumber,
N: RealNumberSpace,
D: Domain, [src]Converts the real vector into a complex vector. Read more
impl<S, T, N, D> RealToComplexTransformsOpsBuffered<S, T> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ToComplexResult + InsertZerosOpsBuffered<S, T>,
<DspVec<S, T, N, D> as ToComplexResult>::ComplexResult: RededicateForceOps<DspVec<S, T, N, D>>,
S: ToSliceMut<T>,
T: RealNumber,
N: RealNumberSpace,
D: Domain, [src]
impl<S, T, N, D> RealToComplexTransformsOpsBuffered<S, T> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ToComplexResult + InsertZerosOpsBuffered<S, T>,
<DspVec<S, T, N, D> as ToComplexResult>::ComplexResult: RededicateForceOps<DspVec<S, T, N, D>>,
S: ToSliceMut<T>,
T: RealNumber,
N: RealNumberSpace,
D: Domain, [src]fn to_complex_b<B>(self, buffer: &mut B) -> Self::ComplexResult where
B: for<'a> Buffer<'a, S, T>, [src]
fn to_complex_b<B>(self, buffer: &mut B) -> Self::ComplexResult where
B: for<'a> Buffer<'a, S, T>, [src]Converts the real vector into a complex vector. The buffer allows this operation to succeed even if the storage type doesn’t allow resizing. Read more
impl<S, T, N, D> RededicateForceOps<DspVec<S, T, N, D>> for RealTimeVec<S, T> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> RededicateForceOps<DspVec<S, T, N, D>> for RealTimeVec<S, T> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]Make Other a Self without performing any checks.
Make Other a Self without performing any checks. Read more
impl<S, T, N, D> RededicateForceOps<DspVec<S, T, N, D>> for RealFreqVec<S, T> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> RededicateForceOps<DspVec<S, T, N, D>> for RealFreqVec<S, T> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]Make Other a Self without performing any checks.
Make Other a Self without performing any checks. Read more
impl<S, T, N, D> RededicateForceOps<DspVec<S, T, N, D>> for ComplexTimeVec<S, T> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> RededicateForceOps<DspVec<S, T, N, D>> for ComplexTimeVec<S, T> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]Make Other a Self without performing any checks.
Make Other a Self without performing any checks. Read more
impl<S, T, N, D> RededicateForceOps<DspVec<S, T, N, D>> for ComplexFreqVec<S, T> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> RededicateForceOps<DspVec<S, T, N, D>> for ComplexFreqVec<S, T> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]Make Other a Self without performing any checks.
Make Other a Self without performing any checks. Read more
impl<S, T, N, D> RededicateForceOps<DspVec<S, T, N, D>> for GenDspVec<S, T> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> RededicateForceOps<DspVec<S, T, N, D>> for GenDspVec<S, T> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]Make Other a Self without performing any checks.
fn rededicate_with_runtime_data(
origin: DspVec<S, T, N, D>,
is_complex: bool,
domain: DataDomain
) -> Self[src]
fn rededicate_with_runtime_data(
origin: DspVec<S, T, N, D>,
is_complex: bool,
domain: DataDomain
) -> Self[src]Make Other a Self without performing any checks. Read more
impl<S, T, N, D, O> RededicateOps<O> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
DspVec<S, T, N, D>: RededicateForceOps<O>,
N: NumberSpace,
D: Domain,
O: Vector<T>, [src]
impl<S, T, N, D, O> RededicateOps<O> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
DspVec<S, T, N, D>: RededicateForceOps<O>,
N: NumberSpace,
D: Domain,
O: Vector<T>, [src]Make Other a Self. Read more
impl<S, T, N, D, O> RededicateToOps<O> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain,
O: Vector<T> + RededicateOps<Self>, [src]
impl<S, T, N, D, O> RededicateToOps<O> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain,
O: Vector<T> + RededicateOps<Self>, [src]Converts Self inot Other.
impl<S, T, N, D> ReorganizeDataOps<T> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> ReorganizeDataOps<T> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]impl<S, T, N, D> ResizeBufferedOps<S, T> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> ResizeBufferedOps<S, T> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]impl<S, T, N, D> ResizeOps for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> ResizeOps for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]Changes self.len().
If self.is_complex() is true then len must be an even number.
len > self.alloc_len() is only possible if the underlying storage supports resizing. Read more
impl<S, T, D, N> ScaleOps<Complex<T>> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]
impl<S, T, D, N> ScaleOps<Complex<T>> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]impl<S, T, D, N> ScaleOps<T> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, D, N> ScaleOps<T> for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]impl<S, T, N, D> SplitOps for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> SplitOps for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]Splits the vector into several smaller vectors. self.len() must be dividable by
targets.len() without a remainder and this condition must be true too
targets.len() > 0. Read more
impl<S, T, N, D> StatisticsOps<Complex<T>> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]
impl<S, T, N, D> StatisticsOps<Complex<T>> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]type Result = Statistics<Complex<T>>Calculates the statistics of the data. Read more
impl<S, T, N, D> StatisticsOps<T> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: RealNumberSpace,
D: Domain, [src]
impl<S, T, N, D> StatisticsOps<T> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: RealNumberSpace,
D: Domain, [src]type Result = Statistics<T>Calculates the statistics of the data. Read more
impl<S, T, N, D> StatisticsSplitOps<Complex<T>> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]
impl<S, T, N, D> StatisticsSplitOps<Complex<T>> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]type Result = StatsVec<Statistics<Complex<T>>>Calculates the statistics of the data contained in the vector as if the vector would
have been split into len pieces. self.len should be dividable by
len without a remainder,
but this isn’t enforced by the implementation.
For implementation reasons len <= 16 must be true. Read more
impl<S, T, N, D> StatisticsSplitOps<T> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: RealNumberSpace,
D: Domain, [src]
impl<S, T, N, D> StatisticsSplitOps<T> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: RealNumberSpace,
D: Domain, [src]type Result = StatsVec<Statistics<T>>Calculates the statistics of the data contained in the vector as if the vector would
have been split into len pieces. self.len should be dividable by
len without a remainder,
but this isn’t enforced by the implementation.
For implementation reasons len <= 16 must be true. Read more
impl<S, T, N, D> SumOps<Complex<T>> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]
impl<S, T, N, D> SumOps<Complex<T>> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: Domain, [src]impl<S, T, N, D> SumOps<T> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: RealNumberSpace,
D: Domain, [src]
impl<S, T, N, D> SumOps<T> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: RealNumberSpace,
D: Domain, [src]impl<S, T, N, D> SymmetricFrequencyToTimeDomainOperations<S, T> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ToRealTimeResult + ToTimeResult + FrequencyDomainOperations<S, T>,
<DspVec<S, T, N, D> as ToRealTimeResult>::RealTimeResult: RededicateForceOps<DspVec<S, T, N, D>> + TimeDomainOperations<S, T>,
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: FrequencyDomain, [src]
impl<S, T, N, D> SymmetricFrequencyToTimeDomainOperations<S, T> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ToRealTimeResult + ToTimeResult + FrequencyDomainOperations<S, T>,
<DspVec<S, T, N, D> as ToRealTimeResult>::RealTimeResult: RededicateForceOps<DspVec<S, T, N, D>> + TimeDomainOperations<S, T>,
S: ToSliceMut<T>,
T: RealNumber,
N: ComplexNumberSpace,
D: FrequencyDomain, [src]fn plain_sifft<B>(self, buffer: &mut B) -> TransRes<Self::RealTimeResult> where
B: for<'a> Buffer<'a, S, T>, [src]
fn plain_sifft<B>(self, buffer: &mut B) -> TransRes<Self::RealTimeResult> where
B: for<'a> Buffer<'a, S, T>, [src]Performs a Symmetric Inverse Fast Fourier Transformation under the assumption that self
contains half of a symmetric spectrum starting from 0 Hz. This assumption
isn’t verified and no error is raised if the spectrum isn’t symmetric. The reason
for this is that there is no robust verification possible. Read more
Performs a Symmetric Inverse Fast Fourier Transformation under the assumption that self
contains half of a symmetric spectrum starting from 0 Hz. This assumption
isn’t verified and no error is raised if the spectrum isn’t symmetric. The reason
for this is that there is no robust verification possible. Read more
fn windowed_sifft<B>(
self,
buffer: &mut B,
window: &dyn WindowFunction<T>
) -> TransRes<Self::RealTimeResult> where
B: for<'a> Buffer<'a, S, T>, [src]
fn windowed_sifft<B>(
self,
buffer: &mut B,
window: &dyn WindowFunction<T>
) -> TransRes<Self::RealTimeResult> where
B: for<'a> Buffer<'a, S, T>, [src]Performs a Symmetric Inverse Fast Fourier Transformation (SIFFT) and removes the FFT
window. The SIFFT is performed under the assumption that self
contains half of a symmetric spectrum starting from 0 Hz. This assumption
isn’t verified and no error is raised if the spectrum isn’t symmetric. The reason
for this is that there is no robust verification possible. Read more
impl<S, T, N, D> SymmetricTimeToFrequencyDomainOperations<S, T> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ToFreqResult,
<DspVec<S, T, N, D> as ToFreqResult>::FreqResult: RededicateForceOps<DspVec<S, T, N, D>> + FrequencyDomainOperations<S, T> + ResizeOps,
S: ToSliceMut<T>,
T: RealNumber,
N: RealNumberSpace,
D: TimeDomain, [src]
impl<S, T, N, D> SymmetricTimeToFrequencyDomainOperations<S, T> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ToFreqResult,
<DspVec<S, T, N, D> as ToFreqResult>::FreqResult: RededicateForceOps<DspVec<S, T, N, D>> + FrequencyDomainOperations<S, T> + ResizeOps,
S: ToSliceMut<T>,
T: RealNumber,
N: RealNumberSpace,
D: TimeDomain, [src]fn plain_sfft<B>(self, buffer: &mut B) -> TransRes<Self::FreqResult> where
B: for<'a> Buffer<'a, S, T>, [src]
fn plain_sfft<B>(self, buffer: &mut B) -> TransRes<Self::FreqResult> where
B: for<'a> Buffer<'a, S, T>, [src]Performs a Symmetric Fast Fourier Transformation under the assumption that self
is symmetric around the center. This assumption
isn’t verified and no error is raised if the vector isn’t symmetric. Read more
Performs a Symmetric Fast Fourier Transformation under the assumption that self
is symmetric around the center. This assumption
isn’t verified and no error is raised if the vector isn’t symmetric. Read more
fn windowed_sfft<B>(
self,
buffer: &mut B,
window: &dyn WindowFunction<T>
) -> TransRes<Self::FreqResult> where
B: for<'a> Buffer<'a, S, T>, [src]
fn windowed_sfft<B>(
self,
buffer: &mut B,
window: &dyn WindowFunction<T>
) -> TransRes<Self::FreqResult> where
B: for<'a> Buffer<'a, S, T>, [src]Performs a Symmetric Fast Fourier Transformation under the assumption that self
is symmetric around the center. This assumption
isn’t verified and no error is raised if the vector isn’t symmetric. Read more
impl<S, T, N, D> TimeDomainOperations<S, T> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ToFreqResult,
<DspVec<S, T, N, D> as ToFreqResult>::FreqResult: RededicateForceOps<DspVec<S, T, N, D>>,
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: TimeDomain, [src]
impl<S, T, N, D> TimeDomainOperations<S, T> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ToFreqResult,
<DspVec<S, T, N, D> as ToFreqResult>::FreqResult: RededicateForceOps<DspVec<S, T, N, D>>,
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: TimeDomain, [src]Applies a window to the data vector.
Removes a window from the data vector.
impl<S, T, N, D> TimeToFrequencyDomainOperations<S, T> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ToFreqResult,
<DspVec<S, T, N, D> as ToFreqResult>::FreqResult: RededicateForceOps<DspVec<S, T, N, D>> + FrequencyDomainOperations<S, T>,
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: TimeDomain, [src]
impl<S, T, N, D> TimeToFrequencyDomainOperations<S, T> for DspVec<S, T, N, D> where
DspVec<S, T, N, D>: ToFreqResult,
<DspVec<S, T, N, D> as ToFreqResult>::FreqResult: RededicateForceOps<DspVec<S, T, N, D>> + FrequencyDomainOperations<S, T>,
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: TimeDomain, [src]Performs a Fast Fourier Transformation transforming a time domain vector into a frequency domain vector. Read more
Performs a Fast Fourier Transformation transforming a time domain vector into a frequency domain vector. Read more
fn windowed_fft<B>(
self,
buffer: &mut B,
window: &dyn WindowFunction<T>
) -> Self::FreqResult where
B: for<'a> Buffer<'a, S, T>, [src]
fn windowed_fft<B>(
self,
buffer: &mut B,
window: &dyn WindowFunction<T>
) -> Self::FreqResult where
B: for<'a> Buffer<'a, S, T>, [src]Applies a FFT window and performs a Fast Fourier Transformation transforming a time domain vector into a frequency domain vector. Read more
impl<S, T, N, D> TrigOps for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> TrigOps for DspVec<S, T, N, D> where
S: ToSliceMut<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]Calculates the principal value of the inverse sine of each element in radians.
Calculates the principal value of the inverse cosine of each element in radians.
Calculates the principal value of the inverse tangent of each element in radians.
Calculates the principal value of the inverse hyperbolic sine of each element in radians.
Calculates the principal value of the inverse hyperbolic cosine of each element in radians.
impl<S, T, N, D> Vector<T> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]
impl<S, T, N, D> Vector<T> for DspVec<S, T, N, D> where
S: ToSlice<T>,
T: RealNumber,
N: NumberSpace,
D: Domain, [src]The x-axis delta. If domain is time domain then delta is in [s],
in frequency domain delta is in [Hz]. Read more
Sets the x-axis delta. If domain is time domain then delta is in [s],
in frequency domain delta is in [Hz]. Read more
The number of valid elements in the vector. This can be changed
with the Resize trait. Read more
The number of valid points. If the vector is complex then every valid point consists of two floating point numbers, while for real vectors every point only consists of one floating point number. Read more
Gets the multi core settings which determine how the work is split between several cores if the amount of data gets larger. Read more
Sets the multi core settings which determine how the work is split between several cores if the amount of data gets larger. Read more
Auto Trait Implementations
impl<S, T, N, D> RefUnwindSafe for DspVec<S, T, N, D> where
D: RefUnwindSafe,
N: RefUnwindSafe,
S: RefUnwindSafe,
T: RefUnwindSafe, impl<S, T, N, D> UnwindSafe for DspVec<S, T, N, D> where
D: UnwindSafe,
N: UnwindSafe,
S: UnwindSafe,
T: UnwindSafe, Blanket Implementations
Mutably borrows from an owned value. Read more