[][src]Struct basic_dsp::DspVec

pub struct DspVec<S, T, N, D> where
    D: Domain,
    N: NumberSpace,
    S: ToSlice<T>,
    T: RealNumber
{ pub data: S, // some fields omitted }

A 1xN (one times N elements) or Nx1 data vector as used for most digital signal processing (DSP) operations.

Vectors come in different flavors:

  1. Time or Frequency domain
  2. Real or Complex numbers
  3. 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: S

The underlying storage. self.len() should be called to find out how many elements in data contain valid data.

Methods

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

pub fn convolve_mat(
    matrix: &[&DspVec<S, T, N, D>],
    impulse_response: &[&DspVec<S, T, N, D>],
    target: &mut [T]
) -> Result<(), ErrorReason>
[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.

impl<S, T> DspVec<S, T, RealOrComplex, TimeOrFreq> where
    S: ToSliceMut<T>,
    T: RealNumber
[src]

pub fn is_erroneous(&self) -> bool
[src]

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<T, S> ToRealFreqMatrix<DspVec<S, T, Real, Freq>, T> for [S; 3] where
    S: ToRealVector<T> + ToSlice<T>,
    T: RealNumber
[src]

type Output = Matrix3xN<DspVec<S, T, Real, Freq>, S, T>

impl<T, S> ToRealFreqMatrix<DspVec<S, T, Real, Freq>, T> for Vec<S> where
    S: ToRealVector<T> + ToSlice<T>,
    T: RealNumber
[src]

type Output = MatrixMxN<DspVec<S, T, Real, Freq>, S, T>

impl<T, S> ToRealFreqMatrix<DspVec<S, T, Real, Freq>, T> for [S; 4] where
    S: ToRealVector<T> + ToSlice<T>,
    T: RealNumber
[src]

type Output = Matrix4xN<DspVec<S, T, Real, Freq>, S, T>

impl<T, S> ToRealFreqMatrix<DspVec<S, T, Real, Freq>, T> for [S; 2] where
    S: ToRealVector<T> + ToSlice<T>,
    T: RealNumber
[src]

type Output = Matrix2xN<DspVec<S, T, Real, Freq>, S, T>

impl<T, S> ToRealTimeMatrix<DspVec<S, T, Real, Time>, T> for [S; 2] where
    S: ToRealVector<T> + ToSlice<T>,
    T: RealNumber
[src]

type Output = Matrix2xN<DspVec<S, T, Real, Time>, S, T>

impl<T, S> ToRealTimeMatrix<DspVec<S, T, Real, Time>, T> for Vec<S> where
    S: ToRealVector<T> + ToSlice<T>,
    T: RealNumber
[src]

type Output = MatrixMxN<DspVec<S, T, Real, Time>, S, T>

impl<T, S> ToRealTimeMatrix<DspVec<S, T, Real, Time>, T> for [S; 4] where
    S: ToRealVector<T> + ToSlice<T>,
    T: RealNumber
[src]

type Output = Matrix4xN<DspVec<S, T, Real, Time>, S, T>

impl<T, S> ToRealTimeMatrix<DspVec<S, T, Real, Time>, T> for [S; 3] where
    S: ToRealVector<T> + ToSlice<T>,
    T: RealNumber
[src]

type Output = Matrix3xN<DspVec<S, T, Real, Time>, S, T>

impl<T, S> ToDspMatrix<DspVec<S, T, RealOrComplex, TimeOrFreq>, T> for [S; 2] where
    S: ToDspVector<T> + ToSlice<T>,
    T: RealNumber
[src]

type Output = Matrix2xN<DspVec<S, T, RealOrComplex, TimeOrFreq>, S, T>

impl<T, S> ToDspMatrix<DspVec<S, T, RealOrComplex, TimeOrFreq>, T> for [S; 4] where
    S: ToDspVector<T> + ToSlice<T>,
    T: RealNumber
[src]

type Output = Matrix4xN<DspVec<S, T, RealOrComplex, TimeOrFreq>, S, T>

impl<T, S> ToDspMatrix<DspVec<S, T, RealOrComplex, TimeOrFreq>, T> for Vec<S> where
    S: ToDspVector<T> + ToSlice<T>,
    T: RealNumber
[src]

type Output = MatrixMxN<DspVec<S, T, RealOrComplex, TimeOrFreq>, S, T>

impl<T, S> ToDspMatrix<DspVec<S, T, RealOrComplex, TimeOrFreq>, T> for [S; 3] where
    S: ToDspVector<T> + ToSlice<T>,
    T: RealNumber
[src]

type Output = Matrix3xN<DspVec<S, T, RealOrComplex, TimeOrFreq>, S, T>

impl<S, T, N, D> ToMatrix<DspVec<S, T, N, D>, T> for [DspVec<S, T, N, D>; 2] where
    D: Domain,
    N: NumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

type Output = Matrix2xN<DspVec<S, T, N, D>, S, T>

impl<S, T, N, D> ToMatrix<DspVec<S, T, N, D>, T> for [DspVec<S, T, N, D>; 3] where
    D: Domain,
    N: NumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

type Output = Matrix3xN<DspVec<S, T, N, D>, S, T>

impl<S, T, N, D> ToMatrix<DspVec<S, T, N, D>, T> for Vec<DspVec<S, T, N, D>> where
    D: Domain,
    N: NumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

type Output = MatrixMxN<DspVec<S, T, N, D>, S, T>

impl<S, T, N, D> ToMatrix<DspVec<S, T, N, D>, T> for [DspVec<S, T, N, D>; 4] where
    D: Domain,
    N: NumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

type Output = Matrix4xN<DspVec<S, T, N, D>, S, T>

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 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 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]

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<T, S> ToComplexTimeMatrix<DspVec<S, T, Complex, Time>, T> for [S; 4] where
    S: ToComplexVector<S, T> + ToSlice<T>,
    T: RealNumber
[src]

type Output = Matrix4xN<DspVec<S, T, Complex, Time>, S, T>

impl<T, S> ToComplexTimeMatrix<DspVec<S, T, Complex, Time>, T> for [S; 2] where
    S: ToComplexVector<S, T> + ToSlice<T>,
    T: RealNumber
[src]

type Output = Matrix2xN<DspVec<S, T, Complex, Time>, S, T>

impl<T, S> ToComplexTimeMatrix<DspVec<S, T, Complex, Time>, T> for Vec<S> where
    S: ToComplexVector<S, T> + ToSlice<T>,
    T: RealNumber
[src]

type Output = MatrixMxN<DspVec<S, T, Complex, Time>, S, T>

impl<T, S> ToComplexTimeMatrix<DspVec<S, T, Complex, Time>, T> for [S; 3] where
    S: ToComplexVector<S, T> + ToSlice<T>,
    T: RealNumber
[src]

type Output = Matrix3xN<DspVec<S, T, Complex, Time>, S, T>

impl<S, T, N, D> SumOps<Complex<T>> for DspVec<S, T, N, D> where
    D: Domain,
    N: ComplexNumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

impl<S, T, N, D> SumOps<T> for DspVec<S, T, N, D> where
    D: Domain,
    N: RealNumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

impl<S, T, N, D> StatisticsSplitOps<Complex<T>> for DspVec<S, T, N, D> where
    D: Domain,
    N: ComplexNumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

type Result = ArrayVec<[Statistics<Complex<T>>; 16]>

impl<S, T, N, D> StatisticsSplitOps<T> for DspVec<S, T, N, D> where
    D: Domain,
    N: RealNumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

type Result = ArrayVec<[Statistics<T>; 16]>

impl<S, T, N, D, O, NO, DO> ElementaryWrapAroundOps<O, T, NO, DO> for DspVec<S, T, N, D> where
    D: Domain,
    DO: PosEq<D> + Domain,
    N: NumberSpace,
    NO: PosEq<N> + NumberSpace,
    O: Vector<T> + Index<RangeFull, Output = [T]> + GetMetaData<T, NO, DO>,
    S: ToSliceMut<T>,
    T: RealNumber
[src]

impl<S, T, N, D> StatisticsOps<Complex<T>> for DspVec<S, T, N, D> where
    D: Domain,
    N: ComplexNumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

type Result = Statistics<Complex<T>>

impl<S, T, N, D> StatisticsOps<T> for DspVec<S, T, N, D> where
    D: Domain,
    N: RealNumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

type Result = Statistics<T>

impl<S, T, N, D> RealToComplexTransformsOpsBuffered<S, T> for DspVec<S, T, N, D> where
    D: Domain,
    N: RealNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber,
    DspVec<S, T, N, D>: ToComplexResult,
    DspVec<S, T, N, D>: InsertZerosOpsBuffered<S, T>,
    <DspVec<S, T, N, D> as ToComplexResult>::ComplexResult: RededicateForceOps<DspVec<S, T, N, D>>, 
[src]

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

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

impl<S, T, D, N> ScaleOps<Complex<T>> for DspVec<S, T, N, D> where
    D: Domain,
    N: ComplexNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber
[src]

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

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

impl<'a, S, T, N, D> FrequencyMultiplication<'a, S, T, &'a (dyn ComplexFrequencyResponse<T> + 'a)> for DspVec<S, T, N, D> where
    D: FrequencyDomain,
    N: ComplexNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber
[src]

impl<'a, S, T, N, D> FrequencyMultiplication<'a, S, T, &'a (dyn RealFrequencyResponse<T> + 'a)> for DspVec<S, T, N, D> where
    D: FrequencyDomain,
    N: NumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber
[src]

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

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

impl<S, T> ToFreqResult for DspVec<S, T, Complex, Time> where
    S: ToSlice<T>,
    T: RealNumber
[src]

type FreqResult = DspVec<S, T, Complex, Freq>

impl<S, T> ToFreqResult for DspVec<S, T, RealOrComplex, TimeOrFreq> where
    S: ToSlice<T>,
    T: RealNumber
[src]

impl<S, T> ToFreqResult for DspVec<S, T, Real, Time> where
    S: ToSlice<T>,
    T: RealNumber
[src]

type FreqResult = DspVec<S, T, Complex, Freq>

impl<S, T, N, D> ResizeOps for DspVec<S, T, N, D> where
    D: Domain,
    N: NumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

impl<S, T> ToRealResult for DspVec<S, T, Complex, Freq> where
    S: ToSlice<T>,
    T: RealNumber
[src]

type RealResult = DspVec<S, T, Real, Freq>

impl<S, T> ToRealResult for DspVec<S, T, Complex, Time> where
    S: ToSlice<T>,
    T: RealNumber
[src]

type RealResult = DspVec<S, T, Real, Time>

impl<S, T> ToRealResult for DspVec<S, T, RealOrComplex, TimeOrFreq> where
    S: ToSlice<T>,
    T: RealNumber
[src]

impl<S, T, N, D> TimeToFrequencyDomainOperations<S, T> for DspVec<S, T, N, D> where
    D: TimeDomain,
    N: NumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber,
    DspVec<S, T, N, D>: ToFreqResult,
    <DspVec<S, T, N, D> as ToFreqResult>::FreqResult: RededicateForceOps<DspVec<S, T, N, D>>,
    <DspVec<S, T, N, D> as ToFreqResult>::FreqResult: FrequencyDomainOperations<S, T>, 
[src]

impl<S, T, N, D> MetaData for DspVec<S, T, N, D> where
    D: Domain,
    N: NumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

impl<S, T, N, D> ComplexOps<T> for DspVec<S, T, N, D> where
    D: Domain,
    N: ComplexNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber
[src]

impl<S, T, N, D> RealInterpolationOps<S, T> for DspVec<S, T, N, D> where
    D: Domain,
    N: RealNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber
[src]

impl<S, T, N, D> Debug for DspVec<S, T, N, D> where
    D: Domain,
    N: NumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

impl<S, T, N, D> Index<RangeTo<usize>> for DspVec<S, T, N, D> where
    D: Domain,
    N: NumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

type Output = [T]

The returned type after indexing.

impl<S, T, N, D> Index<RangeFull> for DspVec<S, T, N, D> where
    D: Domain,
    N: NumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

type Output = [T]

The returned type after indexing.

impl<S, T, N, D> Index<usize> for DspVec<S, T, N, D> where
    D: Domain,
    N: NumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

type Output = T

The returned type after indexing.

impl<S, T, N, D> Index<Range<usize>> for DspVec<S, T, N, D> where
    D: Domain,
    N: NumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

type Output = [T]

The returned type after indexing.

impl<S, T, N, D> Index<RangeFrom<usize>> for DspVec<S, T, N, D> where
    D: Domain,
    N: NumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

type Output = [T]

The returned type after indexing.

impl<S, T, N, D, DF, O, NO> CrossCorrelationOps<O, S, T, NO, DF> for DspVec<S, T, N, D> where
    D: TimeDomain,
    DF: FrequencyDomain,
    N: ComplexNumberSpace,
    NO: PosEq<N> + NumberSpace,
    O: Vector<T> + GetMetaData<T, NO, DF> + Index<RangeFull, Output = [T]>,
    S: ToSliceMut<T>,
    T: RealNumber,
    DspVec<S, T, N, D>: ScaleOps<T>, 
[src]

impl<S, T, N, D> CrossCorrelationArgumentOps<S, T> for DspVec<S, T, N, D> where
    D: TimeDomain,
    N: ComplexNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber,
    DspVec<S, T, N, D>: ToFreqResult,
    DspVec<S, T, N, D>: TimeToFrequencyDomainOperations<S, T>,
    <DspVec<S, T, N, D> as ToFreqResult>::FreqResult: FrequencyDomainOperations<S, T>,
    <DspVec<S, T, N, D> as ToFreqResult>::FreqResult: ComplexOps<T>, 
[src]

impl<S, T, N, D, O, NO, DO> ElementaryOps<O, T, NO, DO> for DspVec<S, T, N, D> where
    D: Domain,
    DO: PosEq<D> + Domain,
    N: NumberSpace,
    NO: PosEq<N> + NumberSpace,
    O: Vector<T> + Index<RangeFull, Output = [T]> + GetMetaData<T, NO, DO>,
    S: ToSliceMut<T>,
    T: RealNumber
[src]

impl<S, T, N, D> GetMetaData<T, N, D> for DspVec<S, T, N, D> where
    D: Domain,
    N: NumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

impl<S, O, T, N, D, NO, DO> PreciseDotProductOps<O, T, T, NO, DO> for DspVec<S, T, N, D> where
    D: Domain,
    DO: PosEq<D> + Domain,
    N: RealNumberSpace,
    NO: PosEq<N> + NumberSpace,
    O: Vector<T> + GetMetaData<T, NO, DO> + Index<RangeFull, Output = [T]>,
    S: ToSlice<T>,
    T: RealNumber
[src]

type Output = Result<T, ErrorReason>

impl<S, O, T, N, D, NO, DO> PreciseDotProductOps<O, Complex<T>, T, NO, DO> for DspVec<S, T, N, D> where
    D: Domain,
    DO: PosEq<D> + Domain,
    N: ComplexNumberSpace,
    NO: PosEq<N> + NumberSpace,
    O: Vector<T> + GetMetaData<T, NO, DO> + Index<RangeFull, Output = [T]>,
    S: ToSlice<T>,
    T: RealNumber
[src]

type Output = Result<Complex<T>, ErrorReason>

impl<S, T, N, D> InterpolationOps<S, T> for DspVec<S, T, N, D> where
    D: Domain,
    N: NumberSpace,
    S: ToSliceMut<T> + ToComplexVector<S, T> + ToDspVector<T>,
    T: RealNumber,
    DspVec<S, T, N, D>: InsertZerosOpsBuffered<S, T>,
    DspVec<S, T, N, D>: ScaleOps<T>,
    DspVec<S, T, N, D>: ResizeBufferedOps<S, T>, 
[src]

impl<S, T, N, D> RealToComplexTransformsOps<T> for DspVec<S, T, N, D> where
    D: Domain,
    N: RealNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber,
    DspVec<S, T, N, D>: ToComplexResult,
    DspVec<S, T, N, D>: InsertZerosOps<T>,
    <DspVec<S, T, N, D> as ToComplexResult>::ComplexResult: RededicateForceOps<DspVec<S, T, N, D>>, 
[src]

impl<S, O, T, N, D, NO, DO> DotProductOps<O, Complex<T>, T, NO, DO> for DspVec<S, T, N, D> where
    D: Domain,
    DO: PosEq<D> + Domain,
    N: ComplexNumberSpace,
    NO: PosEq<N> + NumberSpace,
    O: Vector<T> + GetMetaData<T, NO, DO> + Index<RangeFull, Output = [T]>,
    S: ToSlice<T>,
    T: RealNumber
[src]

type Output = Result<Complex<T>, ErrorReason>

impl<S, O, T, N, D, NO, DO> DotProductOps<O, T, T, NO, DO> for DspVec<S, T, N, D> where
    D: Domain,
    DO: PosEq<D> + Domain,
    N: RealNumberSpace,
    NO: PosEq<N> + NumberSpace,
    O: Vector<T> + GetMetaData<T, NO, DO> + Index<RangeFull, Output = [T]>,
    S: ToSlice<T>,
    T: RealNumber
[src]

type Output = Result<T, ErrorReason>

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, NR, D, O, DO> ComplexToRealSetterOps<O, T, NR, DO> for DspVec<S, T, N, D> where
    D: Domain,
    DO: PosEq<D> + Domain,
    N: ComplexNumberSpace,
    NR: RealNumberSpace,
    O: Index<Range<usize>, Output = [T]> + Vector<T> + GetMetaData<T, NR, DO>,
    S: ToSliceMut<T> + Resize,
    T: RealNumber,
    DspVec<S, T, N, D>: ToRealResult
[src]

impl<S, T, N, D> Vector<T> for DspVec<S, T, N, D> where
    D: Domain,
    N: NumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

impl<S, T> ToTimeResult for DspVec<S, T, Complex, Freq> where
    S: ToSlice<T>,
    T: RealNumber
[src]

type TimeResult = DspVec<S, T, Complex, Time>

Specifies what the the result is if a type is transformed to time domain.

impl<S, T> ToTimeResult for DspVec<S, T, RealOrComplex, TimeOrFreq> where
    S: ToSlice<T>,
    T: RealNumber
[src]

type TimeResult = DspVec<S, T, RealOrComplex, TimeOrFreq>

Specifies what the the result is if a type is transformed to time domain.

impl<S, T, N, D> SymmetricTimeToFrequencyDomainOperations<S, T> for DspVec<S, T, N, D> where
    D: TimeDomain,
    N: RealNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber,
    DspVec<S, T, N, D>: ToFreqResult,
    <DspVec<S, T, N, D> as ToFreqResult>::FreqResult: RededicateForceOps<DspVec<S, T, N, D>>,
    <DspVec<S, T, N, D> as ToFreqResult>::FreqResult: FrequencyDomainOperations<S, T>,
    <DspVec<S, T, N, D> as ToFreqResult>::FreqResult: ResizeOps
[src]

impl<S, T, N, D, O> RededicateToOps<O> for DspVec<S, T, N, D> where
    D: Domain,
    N: NumberSpace,
    O: Vector<T> + RededicateOps<DspVec<S, T, N, D>>,
    S: ToSlice<T>,
    T: RealNumber
[src]

impl<S, T, N, D> ComplexIndexMut<Range<usize>> for DspVec<S, T, N, D> where
    D: Domain,
    N: ComplexNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber
[src]

impl<S, T, N, D> ComplexIndexMut<usize> for DspVec<S, T, N, D> where
    D: Domain,
    N: ComplexNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber
[src]

impl<S, T, N, D> ComplexIndexMut<RangeFull> for DspVec<S, T, N, D> where
    D: Domain,
    N: ComplexNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber
[src]

impl<S, T, N, D> ComplexIndexMut<RangeFrom<usize>> for DspVec<S, T, N, D> where
    D: Domain,
    N: ComplexNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber
[src]

impl<S, T, N, D> ComplexIndexMut<RangeTo<usize>> for DspVec<S, T, N, D> where
    D: Domain,
    N: ComplexNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber
[src]

impl<S, T, N, D> RededicateForceOps<DspVec<S, T, N, D>> for DspVec<S, T, Real, Freq> where
    D: Domain,
    N: NumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

impl<S, T, N, D> RededicateForceOps<DspVec<S, T, N, D>> for DspVec<S, T, RealOrComplex, TimeOrFreq> where
    D: Domain,
    N: NumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

impl<S, T, N, D> RededicateForceOps<DspVec<S, T, N, D>> for DspVec<S, T, Complex, Time> where
    D: Domain,
    N: NumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

impl<S, T, N, D> RededicateForceOps<DspVec<S, T, N, D>> for DspVec<S, T, Complex, Freq> where
    D: Domain,
    N: NumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

impl<S, T, N, D> RededicateForceOps<DspVec<S, T, N, D>> for DspVec<S, T, Real, Time> where
    D: Domain,
    N: NumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

impl<S, T, N, D> ComplexIndex<RangeTo<usize>> for DspVec<S, T, N, D> where
    D: Domain,
    N: ComplexNumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

type Output = [Complex<T>]

impl<S, T, N, D> ComplexIndex<Range<usize>> for DspVec<S, T, N, D> where
    D: Domain,
    N: ComplexNumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

type Output = [Complex<T>]

impl<S, T, N, D> ComplexIndex<RangeFrom<usize>> for DspVec<S, T, N, D> where
    D: Domain,
    N: ComplexNumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

type Output = [Complex<T>]

impl<S, T, N, D> ComplexIndex<RangeFull> for DspVec<S, T, N, D> where
    D: Domain,
    N: ComplexNumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

type Output = [Complex<T>]

impl<S, T, N, D> ComplexIndex<usize> for DspVec<S, T, N, D> where
    D: Domain,
    N: ComplexNumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

type Output = Complex<T>

impl<S, T, N, D, R> MapAggregateOps<T, R> for DspVec<S, T, N, D> where
    D: Domain,
    N: RealNumberSpace,
    R: Send,
    S: ToSlice<T>,
    T: RealNumber
[src]

type Output = Result<R, ErrorReason>

impl<S, T, N, D, R> MapAggregateOps<Complex<T>, R> for DspVec<S, T, N, D> where
    D: Domain,
    N: ComplexNumberSpace,
    R: Send,
    S: ToSlice<T>,
    T: RealNumber
[src]

type Output = Result<R, ErrorReason>

impl<S, T, N, D> Clone for DspVec<S, T, N, D> where
    D: Domain + Clone,
    N: NumberSpace + Clone,
    S: ToSlice<T> + Clone,
    T: RealNumber
[src]

impl<S, T, N, D> FrequencyToTimeDomainOperations<S, T> for DspVec<S, T, N, D> where
    D: FrequencyDomain,
    N: ComplexNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber,
    DspVec<S, T, N, D>: ToTimeResult,
    <DspVec<S, T, N, D> as ToTimeResult>::TimeResult: RededicateForceOps<DspVec<S, T, N, D>>,
    <DspVec<S, T, N, D> as ToTimeResult>::TimeResult: TimeDomainOperations<S, T>, 
[src]

impl<S, T, N, D> ApproximatedOps<T> for DspVec<S, T, N, D> where
    D: Domain,
    N: RealNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber
[src]

impl<S, T, N, D> TimeDomainOperations<S, T> for DspVec<S, T, N, D> where
    D: TimeDomain,
    N: NumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber,
    DspVec<S, T, N, D>: ToFreqResult,
    <DspVec<S, T, N, D> as ToFreqResult>::FreqResult: RededicateForceOps<DspVec<S, T, N, D>>, 
[src]

impl<S, T, N, D> ModuloOps<T> for DspVec<S, T, N, D> where
    D: Domain,
    N: RealNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber
[src]

impl<S, N, D> PreciseSumOps<f64> for DspVec<S, f32, N, D> where
    D: Domain,
    N: RealNumberSpace,
    S: ToSlice<f32>, 
[src]

impl<S, N, D> PreciseSumOps<f64> for DspVec<S, f64, N, D> where
    D: Domain,
    N: RealNumberSpace,
    S: ToSlice<f64>, 
[src]

impl<S, N, D> PreciseSumOps<Complex<f64>> for DspVec<S, f32, N, D> where
    D: Domain,
    N: ComplexNumberSpace,
    S: ToSlice<f32>, 
[src]

impl<S, N, D> PreciseSumOps<Complex<f64>> for DspVec<S, f64, N, D> where
    D: Domain,
    N: ComplexNumberSpace,
    S: ToSlice<f64>, 
[src]

impl<S, N, D> PreciseStatisticsSplitOps<Complex<f64>> for DspVec<S, f32, N, D> where
    D: Domain,
    N: ComplexNumberSpace,
    S: ToSlice<f32>, 
[src]

type Result = ArrayVec<[Statistics<Complex<f64>>; 16]>

impl<S, N, D> PreciseStatisticsSplitOps<Complex<f64>> for DspVec<S, f64, N, D> where
    D: Domain,
    N: ComplexNumberSpace,
    S: ToSlice<f64>, 
[src]

type Result = ArrayVec<[Statistics<Complex<f64>>; 16]>

impl<S, N, D> PreciseStatisticsSplitOps<f64> for DspVec<S, f64, N, D> where
    D: Domain,
    N: RealNumberSpace,
    S: ToSlice<f64>, 
[src]

type Result = ArrayVec<[Statistics<f64>; 16]>

impl<S, N, D> PreciseStatisticsSplitOps<f64> for DspVec<S, f32, N, D> where
    D: Domain,
    N: RealNumberSpace,
    S: ToSlice<f32>, 
[src]

type Result = ArrayVec<[Statistics<f64>; 16]>

impl<S, N, D> PreciseStatisticsOps<f64> for DspVec<S, f64, N, D> where
    D: Domain,
    N: RealNumberSpace,
    S: ToSlice<f64>, 
[src]

type Result = Statistics<f64>

impl<S, N, D> PreciseStatisticsOps<f64> for DspVec<S, f32, N, D> where
    D: Domain,
    N: RealNumberSpace,
    S: ToSlice<f32>, 
[src]

type Result = Statistics<f64>

impl<S, N, D> PreciseStatisticsOps<Complex<f64>> for DspVec<S, f32, N, D> where
    D: Domain,
    N: ComplexNumberSpace,
    S: ToSlice<f32>, 
[src]

type Result = Statistics<Complex<f64>>

impl<S, N, D> PreciseStatisticsOps<Complex<f64>> for DspVec<S, f64, N, D> where
    D: Domain,
    N: ComplexNumberSpace,
    S: ToSlice<f64>, 
[src]

type Result = Statistics<Complex<f64>>

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

impl<S, T, N, D> OffsetOps<Complex<T>> for DspVec<S, T, N, D> where
    D: Domain,
    N: ComplexNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber
[src]

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

impl<S, T, N, D> FrequencyDomainOperations<S, T> for DspVec<S, T, N, D> where
    D: FrequencyDomain,
    N: ComplexNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber,
    DspVec<S, T, N, D>: ToTimeResult,
    <DspVec<S, T, N, D> as ToTimeResult>::TimeResult: RededicateForceOps<DspVec<S, T, N, D>>, 
[src]

impl<S, T> From<S> for DspVec<S, T, Complex, Time> where
    S: ToSlice<T>,
    T: RealNumber
[src]

impl<S, T> From<S> for DspVec<S, T, Real, Freq> where
    S: ToSlice<T>,
    T: RealNumber
[src]

impl<S, T> From<S> for DspVec<S, T, Real, Time> where
    S: ToSlice<T>,
    T: RealNumber
[src]

impl<S, T> From<S> for DspVec<S, T, Complex, Freq> where
    S: ToSlice<T>,
    T: RealNumber
[src]

impl<S, T> ToRealTimeResult for DspVec<S, T, RealOrComplex, TimeOrFreq> where
    S: ToSlice<T>,
    T: RealNumber
[src]

impl<S, T> ToRealTimeResult for DspVec<S, T, Complex, Freq> where
    S: ToSlice<T>,
    T: RealNumber
[src]

impl<'a, S, T, N, D> Convolution<'a, S, T, &'a (dyn ComplexImpulseResponse<T> + 'a)> for DspVec<S, T, N, D> where
    D: TimeDomain,
    N: ComplexNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber,
    DspVec<S, T, N, D>: TimeToFrequencyDomainOperations<S, T>,
    DspVec<S, T, N, D>: Clone,
    DspVec<S, T, N, D>: 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
    D: TimeDomain,
    N: NumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber,
    DspVec<S, T, N, D>: TimeToFrequencyDomainOperations<S, T>,
    DspVec<S, T, N, D>: Clone,
    DspVec<S, T, N, D>: ConvolutionOps<DspVec<InlineVector<T>, T, N, D>, S, T, N, D>, 
[src]

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

impl<S, T> ToComplexResult for DspVec<S, T, Real, Time> where
    S: ToSlice<T>,
    T: RealNumber
[src]

impl<S, T> ToComplexResult for DspVec<S, T, RealOrComplex, TimeOrFreq> where
    S: ToSlice<T>,
    T: RealNumber
[src]

impl<S, T> ToComplexResult for DspVec<S, T, Real, Freq> where
    S: ToSlice<T>,
    T: RealNumber
[src]

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

impl<S, T, N, NR, D, O, DO> ComplexToRealGetterOps<O, T, NR, DO> for DspVec<S, T, N, D> where
    D: Domain,
    DO: PosEq<D> + Domain,
    N: ComplexNumberSpace,
    NR: RealNumberSpace,
    O: Vector<T> + GetMetaData<T, NR, DO> + Index<Range<usize>, Output = [T]> + IndexMut<Range<usize>>,
    S: ToSlice<T>,
    T: RealNumber,
    DspVec<S, T, N, D>: ToRealResult
[src]

impl<S, T, N, D> ComplexToRealTransformsOpsBuffered<S, T> for DspVec<S, T, N, D> where
    D: Domain,
    N: ComplexNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber,
    DspVec<S, T, N, D>: ToRealResult,
    <DspVec<S, T, N, D> as ToRealResult>::RealResult: RededicateForceOps<DspVec<S, T, N, D>>, 
[src]

impl<S, T, N, D, O> RededicateOps<O> for DspVec<S, T, N, D> where
    D: Domain,
    N: NumberSpace,
    O: Vector<T>,
    S: ToSlice<T>,
    T: RealNumber,
    DspVec<S, T, N, D>: RededicateForceOps<O>, 
[src]

impl<S, T, N, D> IndexMut<Range<usize>> for DspVec<S, T, N, D> where
    D: Domain,
    N: NumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber
[src]

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

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

impl<S, T, N, D> IndexMut<RangeTo<usize>> for DspVec<S, T, N, D> where
    D: Domain,
    N: NumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber
[src]

impl<S, T, N, D> IndexMut<RangeFrom<usize>> for DspVec<S, T, N, D> where
    D: Domain,
    N: NumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber
[src]

impl<S, T, N, D> ComplexToRealTransformsOps<T> for DspVec<S, T, N, D> where
    D: Domain,
    N: ComplexNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber,
    DspVec<S, T, N, D>: ToRealResult,
    <DspVec<S, T, N, D> as ToRealResult>::RealResult: RededicateForceOps<DspVec<S, T, N, D>>, 
[src]

impl<S, T, N, D> MapInplaceOps<T> for DspVec<S, T, N, D> where
    D: Domain,
    N: RealNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber
[src]

impl<S, T, N, D> MapInplaceOps<Complex<T>> for DspVec<S, T, N, D> where
    D: Domain,
    N: ComplexNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber
[src]

impl<S, T, N, D> SymmetricFrequencyToTimeDomainOperations<S, T> for DspVec<S, T, N, D> where
    D: FrequencyDomain,
    N: ComplexNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber,
    DspVec<S, T, N, D>: ToRealTimeResult,
    DspVec<S, T, N, D>: ToTimeResult,
    DspVec<S, T, N, D>: FrequencyDomainOperations<S, T>,
    <DspVec<S, T, N, D> as ToRealTimeResult>::RealTimeResult: RededicateForceOps<DspVec<S, T, N, D>>,
    <DspVec<S, T, N, D> as ToRealTimeResult>::RealTimeResult: TimeDomainOperations<S, T>, 
[src]

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

impl<S, T, N, D> FromVector<T> for DspVec<S, T, N, D> where
    D: Domain,
    N: NumberSpace,
    S: ToSlice<T>,
    T: RealNumber
[src]

type Output = S

Type of the underlying storage of a vector.

impl<S, T, N, D> RealOps for DspVec<S, T, N, D> where
    D: Domain,
    N: RealNumberSpace,
    S: ToSliceMut<T>,
    T: RealNumber
[src]

Auto Trait Implementations

impl<S, T, N, D> Send for DspVec<S, T, N, D> where
    D: Send,
    N: Send,
    S: Send

impl<S, T, N, D> Sync for DspVec<S, T, N, D> where
    D: Sync,
    N: Sync,
    S: Sync

Blanket Implementations

impl<T> From for T
[src]

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

impl<T, U> TryFrom for T where
    T: From<U>, 
[src]

type Error = !

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Erased for T