Struct signal_processing::Zpk
source · pub struct Zpk<T: ComplexFloat, Z: MaybeList<T> = (), P: MaybeList<T> = (), K: ComplexFloat<Real = T::Real> = T> {
pub z: ProductSequence<T, Z>,
pub p: ProductSequence<T, P>,
pub k: K,
}Fields§
§z: ProductSequence<T, Z>§p: ProductSequence<T, P>§k: KImplementations§
source§impl<T, Z, P, K> Zpk<T, Z, P, K>
impl<T, Z, P, K> Zpk<T, Z, P, K>
pub fn new(z: Z, p: P, k: K) -> Self
pub type View<'a> = Zpk<T, <Z as MaybeContainer<T>>::View<'a>, <P as MaybeContainer<T>>::View<'a>, K> where Z: 'a, P: 'a, Z::View<'a>: MaybeList<T>, P::View<'a>: MaybeList<T>
pub type Owned = Zpk<T, <Z as MaybeContainer<T>>::Owned, <P as MaybeContainer<T>>::Owned, K> where Z::Owned: MaybeList<T>, P::Owned: MaybeList<T>
pub fn as_view<'a>(&'a self) -> Zpk<T, Z::View<'a>, P::View<'a>, K>
pub fn to_owned(&self) -> Zpk<T, Z::Owned, P::Owned, K>
pub fn into_owned(self) -> Zpk<T, Z::Owned, P::Owned, K>
pub fn s() -> Selfwhere
T: Zero,
K: One,
ProductSequence<T, [T; 1]>: Into<ProductSequence<T, Z>>,
ProductSequence<T, ()>: Into<ProductSequence<T, P>>,
pub fn z() -> Selfwhere
T: Zero,
K: One,
ProductSequence<T, [T; 1]>: Into<ProductSequence<T, Z>>,
ProductSequence<T, ()>: Into<ProductSequence<T, P>>,
pub fn one() -> Selfwhere
Self: Default,
pub fn zero() -> Selfwhere
Self: Default,
pub fn is_one(&self) -> bool
pub fn is_zero(&self) -> bool
pub fn poles(&self) -> &[T]
pub fn zeros(&self) -> &[T]
pub fn complex_real<Tol>( self, tolerance: Tol ) -> Result<(Vec<[Complex<T::Real>; 2]>, Vec<[Complex<T::Real>; 2]>, Vec<T::Real>, Vec<T::Real>, K), ComplexRealError>
Trait Implementations§
source§impl<T1, T2, T3, T4, Z1, Z2, Z3, Z4, P1, P2, P3, P4, K1, K2, K3, K4, K5, B1, B2, B3> Add<Zpk<T2, Z2, P2, K2>> for Zpk<T1, Z1, P1, K1>where
T1: ComplexFloat,
T2: ComplexFloat,
T3: ComplexFloat,
T4: ComplexFloat<Real = T3::Real>,
Z1: MaybeList<T1, MaybeSome: StaticMaybe<Z1::Some, Maybe<Vec<Complex<T1::Real>>>: MaybeList<Complex<T1::Real>, Some = B1>>>,
Z2: MaybeList<T2, MaybeSome: StaticMaybe<Z2::Some, Maybe<Vec<Complex<T2::Real>>>: MaybeList<Complex<T2::Real>, Some = B2>>>,
Z3: MaybeList<Complex<T3::Real>>,
Z4: MaybeList<T4>,
P1: MaybeList<T1>,
P2: MaybeList<T2>,
P3: MaybeList<T3>,
P4: MaybeList<T4>,
K1: ComplexFloat<Real = T1::Real>,
K2: ComplexFloat<Real = T2::Real>,
K3: ComplexFloat<Real = T3::Real>,
K4: ComplexFloat<Real = T3::Real>,
K5: ComplexFloat<Real = T3::Real>,
B1: MaybeList<Complex<T1::Real>, MaybeSome: StaticMaybe<B1::Some, Maybe<Vec<Complex<T3::Real>>>: MaybeOr<Vec<Complex<T3::Real>>, <B2::MaybeSome as StaticMaybe<B2::Some>>::Maybe<Vec<Complex<T3::Real>>>, Output = Z3>>>,
B2: MaybeList<Complex<T2::Real>>,
B3: MaybeList<K3>,
Self: SplitNumerDenom,
Zpk<T2, Z2, P2, K2>: SplitNumerDenom,
<Self as SplitNumerDenom>::OutputNum: ToTf<Complex<K1::Real>, B1, (), (), ()>,
<Zpk<T2, Z2, P2, K2> as SplitNumerDenom>::OutputNum: ToTf<Complex<K2::Real>, B2, (), (), ()>,
Tf<Complex<K1::Real>, B1, ()>: Add<Tf<Complex<K2::Real>, B2, ()>, Output = Tf<K3, B3, ()>>,
Tf<K3, B3, ()>: ToZpk<Complex<T3::Real>, Z3, (), K3, (), ()>,
<Self as SplitNumerDenom>::OutputDen: Mul<<Zpk<T2, Z2, P2, K2> as SplitNumerDenom>::OutputDen, Output = Zpk<T3, (), P3, K4>>,
Zpk<Complex<T3::Real>, Z3, (), K3>: Mul<Zpk<T3, (), P3, K4>, Output = Zpk<T4, Z4, P4, K5>>,
impl<T1, T2, T3, T4, Z1, Z2, Z3, Z4, P1, P2, P3, P4, K1, K2, K3, K4, K5, B1, B2, B3> Add<Zpk<T2, Z2, P2, K2>> for Zpk<T1, Z1, P1, K1>where
T1: ComplexFloat,
T2: ComplexFloat,
T3: ComplexFloat,
T4: ComplexFloat<Real = T3::Real>,
Z1: MaybeList<T1, MaybeSome: StaticMaybe<Z1::Some, Maybe<Vec<Complex<T1::Real>>>: MaybeList<Complex<T1::Real>, Some = B1>>>,
Z2: MaybeList<T2, MaybeSome: StaticMaybe<Z2::Some, Maybe<Vec<Complex<T2::Real>>>: MaybeList<Complex<T2::Real>, Some = B2>>>,
Z3: MaybeList<Complex<T3::Real>>,
Z4: MaybeList<T4>,
P1: MaybeList<T1>,
P2: MaybeList<T2>,
P3: MaybeList<T3>,
P4: MaybeList<T4>,
K1: ComplexFloat<Real = T1::Real>,
K2: ComplexFloat<Real = T2::Real>,
K3: ComplexFloat<Real = T3::Real>,
K4: ComplexFloat<Real = T3::Real>,
K5: ComplexFloat<Real = T3::Real>,
B1: MaybeList<Complex<T1::Real>, MaybeSome: StaticMaybe<B1::Some, Maybe<Vec<Complex<T3::Real>>>: MaybeOr<Vec<Complex<T3::Real>>, <B2::MaybeSome as StaticMaybe<B2::Some>>::Maybe<Vec<Complex<T3::Real>>>, Output = Z3>>>,
B2: MaybeList<Complex<T2::Real>>,
B3: MaybeList<K3>,
Self: SplitNumerDenom,
Zpk<T2, Z2, P2, K2>: SplitNumerDenom,
<Self as SplitNumerDenom>::OutputNum: ToTf<Complex<K1::Real>, B1, (), (), ()>,
<Zpk<T2, Z2, P2, K2> as SplitNumerDenom>::OutputNum: ToTf<Complex<K2::Real>, B2, (), (), ()>,
Tf<Complex<K1::Real>, B1, ()>: Add<Tf<Complex<K2::Real>, B2, ()>, Output = Tf<K3, B3, ()>>,
Tf<K3, B3, ()>: ToZpk<Complex<T3::Real>, Z3, (), K3, (), ()>,
<Self as SplitNumerDenom>::OutputDen: Mul<<Zpk<T2, Z2, P2, K2> as SplitNumerDenom>::OutputDen, Output = Zpk<T3, (), P3, K4>>,
Zpk<Complex<T3::Real>, Z3, (), K3>: Mul<Zpk<T3, (), P3, K4>, Output = Zpk<T4, Z4, P4, K5>>,
source§impl<T, Z, P> BesselF<usize> for Zpk<Complex<T>, Z, P, T>
impl<T, Z, P> BesselF<usize> for Zpk<Complex<T>, Z, P, T>
fn besself<const F: usize>( order: usize, frequencies: [T; F], filter_type: FilterGenType, plane: FilterGenPlane<T> ) -> Result<Self, FilterGenError>
source§impl<'a, T, Z, P, K> Bilinear for Zpk<T, Z, P, K>where
T: ComplexFloat + Add<T::Real, Output = T> + Div<T::Real, Output = T> + Mul<T::Real, Output = T> + MulAssign + Product + 'static,
K: ComplexFloat<Real = T::Real> + MulAssign<K::Real> + Mul<K::Real, Output = K> + Div<K::Real, Output = K> + 'static,
Z: MaybeList<T>,
P: MaybeList<T>,
T::Real: Into<T>,
Self: ToZpk<T, Vec<T>, Vec<T>, K, (), ()> + System<Domain = K>,
impl<'a, T, Z, P, K> Bilinear for Zpk<T, Z, P, K>where
T: ComplexFloat + Add<T::Real, Output = T> + Div<T::Real, Output = T> + Mul<T::Real, Output = T> + MulAssign + Product + 'static,
K: ComplexFloat<Real = T::Real> + MulAssign<K::Real> + Mul<K::Real, Output = K> + Div<K::Real, Output = K> + 'static,
Z: MaybeList<T>,
P: MaybeList<T>,
T::Real: Into<T>,
Self: ToZpk<T, Vec<T>, Vec<T>, K, (), ()> + System<Domain = K>,
source§impl<T> ButtAP<usize> for Zpk<Complex<T>, (), Vec<Complex<T>>, T>where
T: Float + FloatConst,
impl<T> ButtAP<usize> for Zpk<Complex<T>, (), Vec<Complex<T>>, T>where
T: Float + FloatConst,
source§impl<T> Butter<usize> for Zpk<Complex<T>, Vec<Complex<T>>, Vec<Complex<T>>, T>
impl<T> Butter<usize> for Zpk<Complex<T>, Vec<Complex<T>>, Vec<Complex<T>>, T>
fn butter<const F: usize>( order: usize, frequencies: [T; F], filter_type: FilterGenType, plane: FilterGenPlane<T> ) -> Result<Self, FilterGenError>
source§impl<T> Cheby1<usize> for Zpk<Complex<T>, Vec<Complex<T>>, Vec<Complex<T>>, T>
impl<T> Cheby1<usize> for Zpk<Complex<T>, Vec<Complex<T>>, Vec<Complex<T>>, T>
fn cheby1<const F: usize>( order: usize, ripple: T, frequencies: [T; F], filter_type: FilterGenType, plane: FilterGenPlane<T> ) -> Result<Self, FilterGenError>
source§impl<T> Cheby2<usize> for Zpk<Complex<T>, Vec<Complex<T>>, Vec<Complex<T>>, T>
impl<T> Cheby2<usize> for Zpk<Complex<T>, Vec<Complex<T>>, Vec<Complex<T>>, T>
fn cheby2<const F: usize>( order: usize, ripple: T, frequencies: [T; F], filter_type: FilterGenType, plane: FilterGenPlane<T> ) -> Result<Self, FilterGenError>
source§impl<T: Clone + ComplexFloat, Z: Clone + MaybeList<T>, P: Clone + MaybeList<T>, K: Clone + ComplexFloat<Real = T::Real>> Clone for Zpk<T, Z, P, K>
impl<T: Clone + ComplexFloat, Z: Clone + MaybeList<T>, P: Clone + MaybeList<T>, K: Clone + ComplexFloat<Real = T::Real>> Clone for Zpk<T, Z, P, K>
source§impl<T: Debug + ComplexFloat, Z: Debug + MaybeList<T>, P: Debug + MaybeList<T>, K: Debug + ComplexFloat<Real = T::Real>> Debug for Zpk<T, Z, P, K>
impl<T: Debug + ComplexFloat, Z: Debug + MaybeList<T>, P: Debug + MaybeList<T>, K: Debug + ComplexFloat<Real = T::Real>> Debug for Zpk<T, Z, P, K>
source§impl<T, Z, P, K> Default for Zpk<T, Z, P, K>where
T: ComplexFloat,
Z: MaybeList<T>,
P: MaybeList<T>,
K: ComplexFloat<Real = T::Real>,
ProductSequence<T, Z>: Default,
ProductSequence<T, P>: Default,
impl<T, Z, P, K> Default for Zpk<T, Z, P, K>where
T: ComplexFloat,
Z: MaybeList<T>,
P: MaybeList<T>,
K: ComplexFloat<Real = T::Real>,
ProductSequence<T, Z>: Default,
ProductSequence<T, P>: Default,
source§impl<'a, 'b, T1, T2, Z1, Z2, P1, P2, K1, K2, O> Div<&'b Zpk<T2, Z2, P2, K2>> for &'a Zpk<T1, Z1, P1, K1>where
T1: ComplexFloat,
T2: ComplexFloat,
Z1: MaybeList<T1>,
Z2: MaybeList<T2>,
P1: MaybeList<T1>,
P2: MaybeList<T2>,
K1: ComplexFloat<Real = T1::Real>,
K2: ComplexFloat<Real = T2::Real>,
Z1::View<'a>: MaybeList<T1>,
P1::View<'a>: MaybeList<T1>,
Z2::View<'b>: MaybeList<T2>,
P2::View<'b>: MaybeList<T2>,
Zpk<T1, Z1::View<'a>, P1::View<'a>, K1>: Div<Zpk<T2, Z2::View<'b>, P2::View<'b>, K2>, Output = O>,
impl<'a, 'b, T1, T2, Z1, Z2, P1, P2, K1, K2, O> Div<&'b Zpk<T2, Z2, P2, K2>> for &'a Zpk<T1, Z1, P1, K1>where
T1: ComplexFloat,
T2: ComplexFloat,
Z1: MaybeList<T1>,
Z2: MaybeList<T2>,
P1: MaybeList<T1>,
P2: MaybeList<T2>,
K1: ComplexFloat<Real = T1::Real>,
K2: ComplexFloat<Real = T2::Real>,
Z1::View<'a>: MaybeList<T1>,
P1::View<'a>: MaybeList<T1>,
Z2::View<'b>: MaybeList<T2>,
P2::View<'b>: MaybeList<T2>,
Zpk<T1, Z1::View<'a>, P1::View<'a>, K1>: Div<Zpk<T2, Z2::View<'b>, P2::View<'b>, K2>, Output = O>,
source§impl<'b, T1, T2, Z1, Z2, P1, P2, K1, K2, O> Div<&'b Zpk<T2, Z2, P2, K2>> for Zpk<T1, Z1, P1, K1>where
T1: ComplexFloat,
T2: ComplexFloat,
Z1: MaybeList<T1>,
Z2: MaybeList<T2>,
P1: MaybeList<T1>,
P2: MaybeList<T2>,
K1: ComplexFloat<Real = T1::Real>,
K2: ComplexFloat<Real = T2::Real>,
Z2::View<'b>: MaybeList<T2>,
P2::View<'b>: MaybeList<T2>,
Zpk<T1, Z1, P1, K1>: Div<Zpk<T2, Z2::View<'b>, P2::View<'b>, K2>, Output = O>,
impl<'b, T1, T2, Z1, Z2, P1, P2, K1, K2, O> Div<&'b Zpk<T2, Z2, P2, K2>> for Zpk<T1, Z1, P1, K1>where
T1: ComplexFloat,
T2: ComplexFloat,
Z1: MaybeList<T1>,
Z2: MaybeList<T2>,
P1: MaybeList<T1>,
P2: MaybeList<T2>,
K1: ComplexFloat<Real = T1::Real>,
K2: ComplexFloat<Real = T2::Real>,
Z2::View<'b>: MaybeList<T2>,
P2::View<'b>: MaybeList<T2>,
Zpk<T1, Z1, P1, K1>: Div<Zpk<T2, Z2::View<'b>, P2::View<'b>, K2>, Output = O>,
source§impl<'b, T, Z, P, K, O> Div<K> for &'b Zpk<T, Z, P, K>where
T: ComplexFloat,
Z: MaybeList<T>,
P: MaybeList<T>,
K: ComplexFloat<Real = T::Real>,
Self: Div<Zpk<T, (), (), K>, Output = O>,
impl<'b, T, Z, P, K, O> Div<K> for &'b Zpk<T, Z, P, K>where
T: ComplexFloat,
Z: MaybeList<T>,
P: MaybeList<T>,
K: ComplexFloat<Real = T::Real>,
Self: Div<Zpk<T, (), (), K>, Output = O>,
source§impl<T, Z, P, K, O> Div<K> for Zpk<T, Z, P, K>where
T: ComplexFloat,
Z: MaybeList<T>,
P: MaybeList<T>,
K: ComplexFloat<Real = T::Real>,
Self: Div<Zpk<T, (), (), K>, Output = O>,
impl<T, Z, P, K, O> Div<K> for Zpk<T, Z, P, K>where
T: ComplexFloat,
Z: MaybeList<T>,
P: MaybeList<T>,
K: ComplexFloat<Real = T::Real>,
Self: Div<Zpk<T, (), (), K>, Output = O>,
source§impl<'a, T1, T2, Z1, Z2, P1, P2, K1, K2, O> Div<Zpk<T2, Z2, P2, K2>> for &'a Zpk<T1, Z1, P1, K1>where
T1: ComplexFloat,
T2: ComplexFloat,
Z1: MaybeList<T1>,
Z2: MaybeList<T2>,
P1: MaybeList<T1>,
P2: MaybeList<T2>,
K1: ComplexFloat<Real = T1::Real>,
K2: ComplexFloat<Real = T2::Real>,
Z1::View<'a>: MaybeList<T1>,
P1::View<'a>: MaybeList<T1>,
Zpk<T1, Z1::View<'a>, P1::View<'a>, K1>: Div<Zpk<T2, Z2, P2, K2>, Output = O>,
impl<'a, T1, T2, Z1, Z2, P1, P2, K1, K2, O> Div<Zpk<T2, Z2, P2, K2>> for &'a Zpk<T1, Z1, P1, K1>where
T1: ComplexFloat,
T2: ComplexFloat,
Z1: MaybeList<T1>,
Z2: MaybeList<T2>,
P1: MaybeList<T1>,
P2: MaybeList<T2>,
K1: ComplexFloat<Real = T1::Real>,
K2: ComplexFloat<Real = T2::Real>,
Z1::View<'a>: MaybeList<T1>,
P1::View<'a>: MaybeList<T1>,
Zpk<T1, Z1::View<'a>, P1::View<'a>, K1>: Div<Zpk<T2, Z2, P2, K2>, Output = O>,
source§impl<T1, T2, T3, Z1, Z2, Z3, P1, P2, P3, K1, K2, K3> Div<Zpk<T2, Z2, P2, K2>> for Zpk<T1, Z1, P1, K1>where
T1: ComplexFloat + ComplexOp<T2, Output = T3>,
T2: ComplexFloat + Into<T3>,
T3: ComplexFloat,
K1: ComplexFloat<Real = T1::Real> + ComplexOp<K2, Output = K3>,
K2: ComplexFloat<Real = T2::Real> + Into<K3>,
K3: ComplexFloat<Real = T3::Real> + Div<Output = K3>,
Z1: MaybeList<T1>,
Z2: MaybeList<T2>,
Z3: MaybeList<T3>,
P1: MaybeList<T1>,
P2: MaybeList<T2>,
P3: MaybeList<T3>,
Z1::MaybeMapped<T3>: MaybeList<T3>,
Z2::MaybeMapped<T3>: MaybeList<T3>,
P1::MaybeMapped<T3>: MaybeList<T3>,
P2::MaybeMapped<T3>: MaybeList<T3>,
ProductSequence<T3, Z1::MaybeMapped<T3>>: Mul<ProductSequence<T3, P2::MaybeMapped<T3>>, Output = ProductSequence<T3, Z3>>,
ProductSequence<T3, P1::MaybeMapped<T3>>: Mul<ProductSequence<T3, Z2::MaybeMapped<T3>>, Output = ProductSequence<T3, P3>>,
Zpk<T3, Z3, P3, K3>: Normalize,
impl<T1, T2, T3, Z1, Z2, Z3, P1, P2, P3, K1, K2, K3> Div<Zpk<T2, Z2, P2, K2>> for Zpk<T1, Z1, P1, K1>where
T1: ComplexFloat + ComplexOp<T2, Output = T3>,
T2: ComplexFloat + Into<T3>,
T3: ComplexFloat,
K1: ComplexFloat<Real = T1::Real> + ComplexOp<K2, Output = K3>,
K2: ComplexFloat<Real = T2::Real> + Into<K3>,
K3: ComplexFloat<Real = T3::Real> + Div<Output = K3>,
Z1: MaybeList<T1>,
Z2: MaybeList<T2>,
Z3: MaybeList<T3>,
P1: MaybeList<T1>,
P2: MaybeList<T2>,
P3: MaybeList<T3>,
Z1::MaybeMapped<T3>: MaybeList<T3>,
Z2::MaybeMapped<T3>: MaybeList<T3>,
P1::MaybeMapped<T3>: MaybeList<T3>,
P2::MaybeMapped<T3>: MaybeList<T3>,
ProductSequence<T3, Z1::MaybeMapped<T3>>: Mul<ProductSequence<T3, P2::MaybeMapped<T3>>, Output = ProductSequence<T3, Z3>>,
ProductSequence<T3, P1::MaybeMapped<T3>>: Mul<ProductSequence<T3, Z2::MaybeMapped<T3>>, Output = ProductSequence<T3, P3>>,
Zpk<T3, Z3, P3, K3>: Normalize,
source§impl<T> Ellip<usize> for Zpk<Complex<T>, Vec<Complex<T>>, Vec<Complex<T>>, T>
impl<T> Ellip<usize> for Zpk<Complex<T>, Vec<Complex<T>>, Vec<Complex<T>>, T>
fn ellip<const F: usize>( order: usize, passband_ripple: T, stopband_ripple: T, frequencies: [T; F], filter_type: FilterGenType, plane: FilterGenPlane<T> ) -> Result<Self, FilterGenError>
source§impl<T> FirPm for Zpk<Complex<T>, Vec<Complex<T>>, Vec<Complex<T>>, T>
impl<T> FirPm for Zpk<Complex<T>, Vec<Complex<T>>, Vec<Complex<T>>, T>
fn firpm<FS, RES, const B2: usize, const R: usize, const W: usize>( order: usize, bands: [Self::Domain; B2], response: [Self::Domain; R], weight: [Self::Domain; W], filter_type: FirPmType, sampling_frequency: FS, accuracy: Self::Domain, persistence: Self::Domain, robustness: Self::Domain, target: Self::Domain ) -> Result<(Self, Self::Domain, RES), FirPmError>
source§impl<'a, T, Z, P, K, S, SS> FreqS<'a, S, SS> for Zpk<T, Z, P, K>where
T: ComplexFloat,
Z: MaybeList<T> + 'a,
P: MaybeList<T> + 'a,
K: ComplexFloat<Real = T::Real>,
S: ComplexFloat<Real = T::Real>,
SS: Lists<S> + 'a,
Z::View<'a>: MaybeList<T>,
P::View<'a>: MaybeList<T>,
Zpk<T, Z::View<'a>, P::View<'a>, K>: ToSos<K, [K; 3], [K; 3], Vec<Tf<K, [K; 3], [K; 3]>>, (), ()> + 'a + System<Domain = K>,
Sos<K, [K; 3], [K; 3], Vec<Tf<K, [K; 3], [K; 3]>>>: for<'b> FreqS<'b, S, SS> + System<Domain = K>,
impl<'a, T, Z, P, K, S, SS> FreqS<'a, S, SS> for Zpk<T, Z, P, K>where
T: ComplexFloat,
Z: MaybeList<T> + 'a,
P: MaybeList<T> + 'a,
K: ComplexFloat<Real = T::Real>,
S: ComplexFloat<Real = T::Real>,
SS: Lists<S> + 'a,
Z::View<'a>: MaybeList<T>,
P::View<'a>: MaybeList<T>,
Zpk<T, Z::View<'a>, P::View<'a>, K>: ToSos<K, [K; 3], [K; 3], Vec<Tf<K, [K; 3], [K; 3]>>, (), ()> + 'a + System<Domain = K>,
Sos<K, [K; 3], [K; 3], Vec<Tf<K, [K; 3], [K; 3]>>>: for<'b> FreqS<'b, S, SS> + System<Domain = K>,
source§impl<'a, T, Z, P, K, H, W, N> FreqZ<'a, H, W, N> for Zpk<T, Z, P, K>where
T: ComplexFloat,
Z: MaybeList<T> + 'a,
P: MaybeList<T> + 'a,
K: ComplexFloat<Real = T::Real>,
H: Lists<Complex<K::Real>>,
W: List<K::Real>,
N: Maybe<usize>,
Z::View<'a>: MaybeList<T>,
P::View<'a>: MaybeList<T>,
Zpk<T, Z::View<'a>, P::View<'a>, K>: ToSos<K, [K; 3], [K; 3], Vec<Tf<K, [K; 3], [K; 3]>>, (), ()> + System<Domain = K>,
Sos<K, [K; 3], [K; 3], Vec<Tf<K, [K; 3], [K; 3]>>>: for<'b> FreqZ<'b, H, W, N> + System<Domain = K>,
impl<'a, T, Z, P, K, H, W, N> FreqZ<'a, H, W, N> for Zpk<T, Z, P, K>where
T: ComplexFloat,
Z: MaybeList<T> + 'a,
P: MaybeList<T> + 'a,
K: ComplexFloat<Real = T::Real>,
H: Lists<Complex<K::Real>>,
W: List<K::Real>,
N: Maybe<usize>,
Z::View<'a>: MaybeList<T>,
P::View<'a>: MaybeList<T>,
Zpk<T, Z::View<'a>, P::View<'a>, K>: ToSos<K, [K; 3], [K; 3], Vec<Tf<K, [K; 3], [K; 3]>>, (), ()> + System<Domain = K>,
Sos<K, [K; 3], [K; 3], Vec<Tf<K, [K; 3], [K; 3]>>>: for<'b> FreqZ<'b, H, W, N> + System<Domain = K>,
source§impl<'a, T1, T2, K1, K2, Z1, Z2, P1, P2> From<&'a Zpk<T1, Z1, P1, K1>> for Zpk<T2, Z2, P2, K2>where
T1: ComplexFloat,
T2: ComplexFloat,
K1: ComplexFloat<Real = T1::Real> + Into<K2>,
K2: ComplexFloat<Real = T2::Real>,
Z1: MaybeList<T1>,
P1: MaybeList<T1>,
Z2: MaybeList<T2>,
P2: MaybeList<T2>,
Z1::View<'a>: MaybeList<T1>,
P1::View<'a>: MaybeList<T1>,
ProductSequence<T1, Z1::View<'a>>: Into<ProductSequence<T2, Z2>>,
ProductSequence<T1, P1::View<'a>>: Into<ProductSequence<T2, P2>>,
impl<'a, T1, T2, K1, K2, Z1, Z2, P1, P2> From<&'a Zpk<T1, Z1, P1, K1>> for Zpk<T2, Z2, P2, K2>where
T1: ComplexFloat,
T2: ComplexFloat,
K1: ComplexFloat<Real = T1::Real> + Into<K2>,
K2: ComplexFloat<Real = T2::Real>,
Z1: MaybeList<T1>,
P1: MaybeList<T1>,
Z2: MaybeList<T2>,
P2: MaybeList<T2>,
Z1::View<'a>: MaybeList<T1>,
P1::View<'a>: MaybeList<T1>,
ProductSequence<T1, Z1::View<'a>>: Into<ProductSequence<T2, Z2>>,
ProductSequence<T1, P1::View<'a>>: Into<ProductSequence<T2, P2>>,
source§impl<T, Z, P, K> Inv for Zpk<T, Z, P, K>where
T: ComplexFloat,
K: ComplexFloat<Real = T::Real> + Inv<Output: ComplexFloat<Real = T::Real>>,
Z: MaybeList<T>,
P: MaybeList<T>,
impl<T, Z, P, K> Inv for Zpk<T, Z, P, K>where
T: ComplexFloat,
K: ComplexFloat<Real = T::Real> + Inv<Output: ComplexFloat<Real = T::Real>>,
Z: MaybeList<T>,
P: MaybeList<T>,
source§impl<'a, T, Z, P, K> IsLinPhase<'a> for Zpk<T, Z, P, K>
impl<'a, T, Z, P, K> IsLinPhase<'a> for Zpk<T, Z, P, K>
source§impl<'a, T, Z, P, K> IsMaxPhase<'a> for Zpk<T, Z, P, K>
impl<'a, T, Z, P, K> IsMaxPhase<'a> for Zpk<T, Z, P, K>
source§impl<T, Z, P, K> MaxPhase for Zpk<T, Z, P, K>where
T: ComplexFloat,
Z: MaybeList<T, Owned: MaybeOwnedList<T>>,
P: MaybeList<T, Owned: MaybeOwnedList<T>>,
K: ComplexFloat<Real = T::Real> + MulAssign<T::Real>,
impl<T, Z, P, K> MaxPhase for Zpk<T, Z, P, K>where
T: ComplexFloat,
Z: MaybeList<T, Owned: MaybeOwnedList<T>>,
P: MaybeList<T, Owned: MaybeOwnedList<T>>,
K: ComplexFloat<Real = T::Real> + MulAssign<T::Real>,
source§impl<T, Z, P, K> MinPhase for Zpk<T, Z, P, K>where
T: ComplexFloat,
Z: MaybeList<T, Owned: MaybeOwnedList<T>>,
P: MaybeList<T, Owned: MaybeOwnedList<T>>,
K: ComplexFloat<Real = T::Real> + MulAssign<T::Real>,
impl<T, Z, P, K> MinPhase for Zpk<T, Z, P, K>where
T: ComplexFloat,
Z: MaybeList<T, Owned: MaybeOwnedList<T>>,
P: MaybeList<T, Owned: MaybeOwnedList<T>>,
K: ComplexFloat<Real = T::Real> + MulAssign<T::Real>,
source§impl<'a, 'b, T1, T2, Z1, Z2, P1, P2, K1, K2, O> Mul<&'b Zpk<T2, Z2, P2, K2>> for &'a Zpk<T1, Z1, P1, K1>where
T1: ComplexFloat,
T2: ComplexFloat,
Z1: MaybeList<T1>,
Z2: MaybeList<T2>,
P1: MaybeList<T1>,
P2: MaybeList<T2>,
K1: ComplexFloat<Real = T1::Real>,
K2: ComplexFloat<Real = T2::Real>,
Z1::View<'a>: MaybeList<T1>,
P1::View<'a>: MaybeList<T1>,
Z2::View<'b>: MaybeList<T2>,
P2::View<'b>: MaybeList<T2>,
Zpk<T1, Z1::View<'a>, P1::View<'a>, K1>: Mul<Zpk<T2, Z2::View<'b>, P2::View<'b>, K2>, Output = O>,
impl<'a, 'b, T1, T2, Z1, Z2, P1, P2, K1, K2, O> Mul<&'b Zpk<T2, Z2, P2, K2>> for &'a Zpk<T1, Z1, P1, K1>where
T1: ComplexFloat,
T2: ComplexFloat,
Z1: MaybeList<T1>,
Z2: MaybeList<T2>,
P1: MaybeList<T1>,
P2: MaybeList<T2>,
K1: ComplexFloat<Real = T1::Real>,
K2: ComplexFloat<Real = T2::Real>,
Z1::View<'a>: MaybeList<T1>,
P1::View<'a>: MaybeList<T1>,
Z2::View<'b>: MaybeList<T2>,
P2::View<'b>: MaybeList<T2>,
Zpk<T1, Z1::View<'a>, P1::View<'a>, K1>: Mul<Zpk<T2, Z2::View<'b>, P2::View<'b>, K2>, Output = O>,
source§impl<'b, T1, T2, Z1, Z2, P1, P2, K1, K2, O> Mul<&'b Zpk<T2, Z2, P2, K2>> for Zpk<T1, Z1, P1, K1>where
T1: ComplexFloat,
T2: ComplexFloat,
Z1: MaybeList<T1>,
Z2: MaybeList<T2>,
P1: MaybeList<T1>,
P2: MaybeList<T2>,
K1: ComplexFloat<Real = T1::Real>,
K2: ComplexFloat<Real = T2::Real>,
Z2::View<'b>: MaybeList<T2>,
P2::View<'b>: MaybeList<T2>,
Zpk<T1, Z1, P1, K1>: Mul<Zpk<T2, Z2::View<'b>, P2::View<'b>, K2>, Output = O>,
impl<'b, T1, T2, Z1, Z2, P1, P2, K1, K2, O> Mul<&'b Zpk<T2, Z2, P2, K2>> for Zpk<T1, Z1, P1, K1>where
T1: ComplexFloat,
T2: ComplexFloat,
Z1: MaybeList<T1>,
Z2: MaybeList<T2>,
P1: MaybeList<T1>,
P2: MaybeList<T2>,
K1: ComplexFloat<Real = T1::Real>,
K2: ComplexFloat<Real = T2::Real>,
Z2::View<'b>: MaybeList<T2>,
P2::View<'b>: MaybeList<T2>,
Zpk<T1, Z1, P1, K1>: Mul<Zpk<T2, Z2::View<'b>, P2::View<'b>, K2>, Output = O>,
source§impl<'b, T, Z, P, K, O> Mul<K> for &'b Zpk<T, Z, P, K>where
T: ComplexFloat,
Z: MaybeList<T>,
P: MaybeList<T>,
K: ComplexFloat<Real = T::Real>,
Self: Mul<Zpk<T, (), (), K>, Output = O>,
impl<'b, T, Z, P, K, O> Mul<K> for &'b Zpk<T, Z, P, K>where
T: ComplexFloat,
Z: MaybeList<T>,
P: MaybeList<T>,
K: ComplexFloat<Real = T::Real>,
Self: Mul<Zpk<T, (), (), K>, Output = O>,
source§impl<T, Z, P, K, O> Mul<K> for Zpk<T, Z, P, K>where
T: ComplexFloat,
Z: MaybeList<T>,
P: MaybeList<T>,
K: ComplexFloat<Real = T::Real>,
Self: Mul<Zpk<T, (), (), K>, Output = O>,
impl<T, Z, P, K, O> Mul<K> for Zpk<T, Z, P, K>where
T: ComplexFloat,
Z: MaybeList<T>,
P: MaybeList<T>,
K: ComplexFloat<Real = T::Real>,
Self: Mul<Zpk<T, (), (), K>, Output = O>,
source§impl<'a, T1, T2, Z1, Z2, P1, P2, K1, K2, O> Mul<Zpk<T2, Z2, P2, K2>> for &'a Zpk<T1, Z1, P1, K1>where
T1: ComplexFloat,
T2: ComplexFloat,
Z1: MaybeList<T1>,
Z2: MaybeList<T2>,
P1: MaybeList<T1>,
P2: MaybeList<T2>,
K1: ComplexFloat<Real = T1::Real>,
K2: ComplexFloat<Real = T2::Real>,
Z1::View<'a>: MaybeList<T1>,
P1::View<'a>: MaybeList<T1>,
Zpk<T1, Z1::View<'a>, P1::View<'a>, K1>: Mul<Zpk<T2, Z2, P2, K2>, Output = O>,
impl<'a, T1, T2, Z1, Z2, P1, P2, K1, K2, O> Mul<Zpk<T2, Z2, P2, K2>> for &'a Zpk<T1, Z1, P1, K1>where
T1: ComplexFloat,
T2: ComplexFloat,
Z1: MaybeList<T1>,
Z2: MaybeList<T2>,
P1: MaybeList<T1>,
P2: MaybeList<T2>,
K1: ComplexFloat<Real = T1::Real>,
K2: ComplexFloat<Real = T2::Real>,
Z1::View<'a>: MaybeList<T1>,
P1::View<'a>: MaybeList<T1>,
Zpk<T1, Z1::View<'a>, P1::View<'a>, K1>: Mul<Zpk<T2, Z2, P2, K2>, Output = O>,
source§impl<T1, T2, T3, T4, Z1, Z2, Z3, P1, P2, P3, K1, K2, K3> Mul<Zpk<T2, Z2, P2, K2>> for Zpk<T1, Z1, P1, K1>where
T1: ComplexFloat + ComplexOp<T2, Output = T3>,
T2: ComplexFloat + Into<T3>,
T3: ComplexFloat,
T4: ComplexFloat<Real = T3::Real>,
K1: ComplexFloat<Real = T1::Real> + ComplexOp<K2, Output = K3>,
K2: ComplexFloat<Real = T2::Real> + Into<K3>,
K3: ComplexFloat<Real = T3::Real> + Mul<Output = K3>,
Z1: MaybeList<T1>,
Z2: MaybeList<T2>,
Z3: MaybeList<T4>,
P1: MaybeList<T1>,
P2: MaybeList<T2>,
P3: MaybeList<T4>,
Z1::MaybeMapped<T3>: MaybeList<T3>,
Z2::MaybeMapped<T3>: MaybeList<T3>,
P1::MaybeMapped<T3>: MaybeList<T3>,
P2::MaybeMapped<T3>: MaybeList<T3>,
ProductSequence<T3, Z1::MaybeMapped<T3>>: Mul<ProductSequence<T3, Z2::MaybeMapped<T3>>, Output = ProductSequence<T4, Z3>>,
ProductSequence<T3, P1::MaybeMapped<T3>>: Mul<ProductSequence<T3, P2::MaybeMapped<T3>>, Output = ProductSequence<T4, P3>>,
Zpk<T4, Z3, P3, K3>: Normalize,
impl<T1, T2, T3, T4, Z1, Z2, Z3, P1, P2, P3, K1, K2, K3> Mul<Zpk<T2, Z2, P2, K2>> for Zpk<T1, Z1, P1, K1>where
T1: ComplexFloat + ComplexOp<T2, Output = T3>,
T2: ComplexFloat + Into<T3>,
T3: ComplexFloat,
T4: ComplexFloat<Real = T3::Real>,
K1: ComplexFloat<Real = T1::Real> + ComplexOp<K2, Output = K3>,
K2: ComplexFloat<Real = T2::Real> + Into<K3>,
K3: ComplexFloat<Real = T3::Real> + Mul<Output = K3>,
Z1: MaybeList<T1>,
Z2: MaybeList<T2>,
Z3: MaybeList<T4>,
P1: MaybeList<T1>,
P2: MaybeList<T2>,
P3: MaybeList<T4>,
Z1::MaybeMapped<T3>: MaybeList<T3>,
Z2::MaybeMapped<T3>: MaybeList<T3>,
P1::MaybeMapped<T3>: MaybeList<T3>,
P2::MaybeMapped<T3>: MaybeList<T3>,
ProductSequence<T3, Z1::MaybeMapped<T3>>: Mul<ProductSequence<T3, Z2::MaybeMapped<T3>>, Output = ProductSequence<T4, Z3>>,
ProductSequence<T3, P1::MaybeMapped<T3>>: Mul<ProductSequence<T3, P2::MaybeMapped<T3>>, Output = ProductSequence<T4, P3>>,
Zpk<T4, Z3, P3, K3>: Normalize,
source§impl<T, Z, P, Z2, P2, K> Normalize for Zpk<T, Z, P, K>where
T: ComplexFloat,
Z: MaybeList<T, MaybeSome: StaticMaybe<Z::Some, Maybe<Vec<T>> = Z2>>,
P: MaybeList<T, MaybeSome: StaticMaybe<Z::Some, Maybe<Vec<T>> = P2>>,
K: ComplexFloat<Real = T::Real>,
ProductSequence<T, Z>: Into<ProductSequence<T, Z2>>,
ProductSequence<T, P>: Into<ProductSequence<T, P2>>,
Z2: MaybeList<T> + Maybe<Vec<T>>,
P2: MaybeList<T> + Maybe<Vec<T>>,
impl<T, Z, P, Z2, P2, K> Normalize for Zpk<T, Z, P, K>where
T: ComplexFloat,
Z: MaybeList<T, MaybeSome: StaticMaybe<Z::Some, Maybe<Vec<T>> = Z2>>,
P: MaybeList<T, MaybeSome: StaticMaybe<Z::Some, Maybe<Vec<T>> = P2>>,
K: ComplexFloat<Real = T::Real>,
ProductSequence<T, Z>: Into<ProductSequence<T, Z2>>,
ProductSequence<T, P>: Into<ProductSequence<T, P2>>,
Z2: MaybeList<T> + Maybe<Vec<T>>,
P2: MaybeList<T> + Maybe<Vec<T>>,
source§impl<T, Z, P, K> One for Zpk<T, Z, P, K>where
T: ComplexFloat,
K: ComplexFloat<Real = T::Real>,
Z: List<T>,
P: List<T>,
Self: Default + Mul<Output = Self>,
impl<T, Z, P, K> One for Zpk<T, Z, P, K>where
T: ComplexFloat,
K: ComplexFloat<Real = T::Real>,
Z: List<T>,
P: List<T>,
Self: Default + Mul<Output = Self>,
source§impl<T, Z, P, K, I> Pow<I> for Zpk<T, Z, P, K>where
T: ComplexFloat + ComplexOp<T, Output = T>,
Z: MaybeList<T>,
P: MaybeList<T>,
K: ComplexFloat<Real = T::Real> + ComplexOp<K, Output = K>,
I: Integer + BitAnd<I, Output = I> + Shr<usize, Output = I> + Copy,
Self: ToZpk<T, Vec<T>, Vec<T>, K, (), ()> + Inv<Output: ToZpk<T, Vec<T>, Vec<T>, K, (), ()>>,
impl<T, Z, P, K, I> Pow<I> for Zpk<T, Z, P, K>where
T: ComplexFloat + ComplexOp<T, Output = T>,
Z: MaybeList<T>,
P: MaybeList<T>,
K: ComplexFloat<Real = T::Real> + ComplexOp<K, Output = K>,
I: Integer + BitAnd<I, Output = I> + Shr<usize, Output = I> + Copy,
Self: ToZpk<T, Vec<T>, Vec<T>, K, (), ()> + Inv<Output: ToZpk<T, Vec<T>, Vec<T>, K, (), ()>>,
source§impl<'a, T1, T2, Z1, Z2, P1, P2, K1, K2> Product<&'a Zpk<T1, Z1, P1, K1>> for Zpk<T2, Z2, P2, K2>where
T1: ComplexFloat,
T2: ComplexFloat,
K1: ComplexFloat<Real = T1::Real>,
K2: ComplexFloat<Real = T2::Real>,
Z1: List<T1>,
P1: List<T1>,
Z2: List<T2>,
P2: List<T2>,
&'a Zpk<T1, Z1, P1, K1>: Into<Self>,
Self: One + 'a,
impl<'a, T1, T2, Z1, Z2, P1, P2, K1, K2> Product<&'a Zpk<T1, Z1, P1, K1>> for Zpk<T2, Z2, P2, K2>where
T1: ComplexFloat,
T2: ComplexFloat,
K1: ComplexFloat<Real = T1::Real>,
K2: ComplexFloat<Real = T2::Real>,
Z1: List<T1>,
P1: List<T1>,
Z2: List<T2>,
P2: List<T2>,
&'a Zpk<T1, Z1, P1, K1>: Into<Self>,
Self: One + 'a,
source§impl<'a, T, Z, P, K, H, W, N> RealFreqZ<'a, H, W, N> for Zpk<T, Z, P, K>where
T: ComplexFloat<Real = K>,
Z: MaybeList<T> + 'a,
P: MaybeList<T> + 'a,
K: Float + FloatConst,
H: Lists<Complex<K>>,
W: List<K>,
N: Maybe<usize>,
Z::View<'a>: MaybeList<T>,
P::View<'a>: MaybeList<T>,
Zpk<T, Z::View<'a>, P::View<'a>, K>: ToSos<K, [K; 3], [K; 3], Vec<Tf<K, [K; 3], [K; 3]>>, (), ()> + System<Domain = K>,
Sos<K, [K; 3], [K; 3], Vec<Tf<K, [K; 3], [K; 3]>>>: for<'b> RealFreqZ<'b, H, W, N> + System<Domain = K>,
impl<'a, T, Z, P, K, H, W, N> RealFreqZ<'a, H, W, N> for Zpk<T, Z, P, K>where
T: ComplexFloat<Real = K>,
Z: MaybeList<T> + 'a,
P: MaybeList<T> + 'a,
K: Float + FloatConst,
H: Lists<Complex<K>>,
W: List<K>,
N: Maybe<usize>,
Z::View<'a>: MaybeList<T>,
P::View<'a>: MaybeList<T>,
Zpk<T, Z::View<'a>, P::View<'a>, K>: ToSos<K, [K; 3], [K; 3], Vec<Tf<K, [K; 3], [K; 3]>>, (), ()> + System<Domain = K>,
Sos<K, [K; 3], [K; 3], Vec<Tf<K, [K; 3], [K; 3]>>>: for<'b> RealFreqZ<'b, H, W, N> + System<Domain = K>,
fn real_freqz(&'a self, n: N) -> (H, W)
source§impl<T, Z, P, K, R> RtfOrSystem for Zpk<T, Z, P, K>
impl<T, Z, P, K, R> RtfOrSystem for Zpk<T, Z, P, K>
source§impl<T, Z, P, K, const W: usize> SfTrans<W> for Zpk<T, Z, P, K>where
T: ComplexFloat + Mul<T::Real, Output = T> + Div<T::Real, Output = T> + Sub<T::Real, Output = T> + Into<Complex<T::Real>>,
K: ComplexFloat<Real = T::Real> + DivAssign<T::Real> + MulAssign<T::Real>,
T::Real: Into<T>,
Complex<T::Real>: Add<T, Output = Complex<T::Real>>,
Z: MaybeList<T>,
P: MaybeList<T>,
Self: ToZpk<T, Vec<T>, Vec<T>, K, (), ()> + System<Domain = K>,
[(); { _ }]:,
impl<T, Z, P, K, const W: usize> SfTrans<W> for Zpk<T, Z, P, K>where
T: ComplexFloat + Mul<T::Real, Output = T> + Div<T::Real, Output = T> + Sub<T::Real, Output = T> + Into<Complex<T::Real>>,
K: ComplexFloat<Real = T::Real> + DivAssign<T::Real> + MulAssign<T::Real>,
T::Real: Into<T>,
Complex<T::Real>: Add<T, Output = Complex<T::Real>>,
Z: MaybeList<T>,
P: MaybeList<T>,
Self: ToZpk<T, Vec<T>, Vec<T>, K, (), ()> + System<Domain = K>,
[(); { _ }]:,
source§impl<T, Z, P, K> SplitNumerDenom for Zpk<T, Z, P, K>
impl<T, Z, P, K> SplitNumerDenom for Zpk<T, Z, P, K>
source§impl<T, Z, P, K> Stabilize for Zpk<T, Z, P, K>where
T: ComplexFloat,
Z: MaybeList<T, Owned: MaybeOwnedList<T>>,
P: MaybeList<T, Owned: MaybeOwnedList<T>>,
K: ComplexFloat<Real = T::Real>,
impl<T, Z, P, K> Stabilize for Zpk<T, Z, P, K>where
T: ComplexFloat,
Z: MaybeList<T, Owned: MaybeOwnedList<T>>,
P: MaybeList<T, Owned: MaybeOwnedList<T>>,
K: ComplexFloat<Real = T::Real>,
source§impl<T1, T2, T3, T4, Z1, Z2, Z3, Z4, P1, P2, P3, P4, K1, K2, K3, K4, K5, B1, B2, B3> Sub<Zpk<T2, Z2, P2, K2>> for Zpk<T1, Z1, P1, K1>where
T1: ComplexFloat,
T2: ComplexFloat,
T3: ComplexFloat,
T4: ComplexFloat<Real = T3::Real>,
Z1: MaybeList<T1, MaybeSome: StaticMaybe<Z1::Some, Maybe<Vec<Complex<T1::Real>>>: MaybeList<Complex<T1::Real>, Some = B1>>>,
Z2: MaybeList<T2, MaybeSome: StaticMaybe<Z2::Some, Maybe<Vec<Complex<T2::Real>>>: MaybeList<Complex<T2::Real>, Some = B2>>>,
Z3: MaybeList<Complex<T3::Real>>,
Z4: MaybeList<T4>,
P1: MaybeList<T1>,
P2: MaybeList<T2>,
P3: MaybeList<T3>,
P4: MaybeList<T4>,
K1: ComplexFloat<Real = T1::Real>,
K2: ComplexFloat<Real = T2::Real>,
K3: ComplexFloat<Real = T3::Real>,
K4: ComplexFloat<Real = T3::Real>,
K5: ComplexFloat<Real = T3::Real>,
B1: MaybeList<Complex<T1::Real>, MaybeSome: StaticMaybe<B1::Some, Maybe<Vec<Complex<T3::Real>>>: MaybeOr<Vec<Complex<T3::Real>>, <B2::MaybeSome as StaticMaybe<B2::Some>>::Maybe<Vec<Complex<T3::Real>>>, Output = Z3>>>,
B2: MaybeList<Complex<T2::Real>>,
B3: MaybeList<K3>,
Self: SplitNumerDenom,
Zpk<T2, Z2, P2, K2>: SplitNumerDenom,
<Self as SplitNumerDenom>::OutputNum: ToTf<Complex<K1::Real>, B1, (), (), ()>,
<Zpk<T2, Z2, P2, K2> as SplitNumerDenom>::OutputNum: ToTf<Complex<K2::Real>, B2, (), (), ()>,
Tf<Complex<K1::Real>, B1, ()>: Sub<Tf<Complex<K2::Real>, B2, ()>, Output = Tf<K3, B3, ()>>,
Tf<K3, B3, ()>: ToZpk<Complex<T3::Real>, Z3, (), K3, (), ()>,
<Self as SplitNumerDenom>::OutputDen: Mul<<Zpk<T2, Z2, P2, K2> as SplitNumerDenom>::OutputDen, Output = Zpk<T3, (), P3, K4>>,
Zpk<Complex<T3::Real>, Z3, (), K3>: Mul<Zpk<T3, (), P3, K4>, Output = Zpk<T4, Z4, P4, K5>>,
impl<T1, T2, T3, T4, Z1, Z2, Z3, Z4, P1, P2, P3, P4, K1, K2, K3, K4, K5, B1, B2, B3> Sub<Zpk<T2, Z2, P2, K2>> for Zpk<T1, Z1, P1, K1>where
T1: ComplexFloat,
T2: ComplexFloat,
T3: ComplexFloat,
T4: ComplexFloat<Real = T3::Real>,
Z1: MaybeList<T1, MaybeSome: StaticMaybe<Z1::Some, Maybe<Vec<Complex<T1::Real>>>: MaybeList<Complex<T1::Real>, Some = B1>>>,
Z2: MaybeList<T2, MaybeSome: StaticMaybe<Z2::Some, Maybe<Vec<Complex<T2::Real>>>: MaybeList<Complex<T2::Real>, Some = B2>>>,
Z3: MaybeList<Complex<T3::Real>>,
Z4: MaybeList<T4>,
P1: MaybeList<T1>,
P2: MaybeList<T2>,
P3: MaybeList<T3>,
P4: MaybeList<T4>,
K1: ComplexFloat<Real = T1::Real>,
K2: ComplexFloat<Real = T2::Real>,
K3: ComplexFloat<Real = T3::Real>,
K4: ComplexFloat<Real = T3::Real>,
K5: ComplexFloat<Real = T3::Real>,
B1: MaybeList<Complex<T1::Real>, MaybeSome: StaticMaybe<B1::Some, Maybe<Vec<Complex<T3::Real>>>: MaybeOr<Vec<Complex<T3::Real>>, <B2::MaybeSome as StaticMaybe<B2::Some>>::Maybe<Vec<Complex<T3::Real>>>, Output = Z3>>>,
B2: MaybeList<Complex<T2::Real>>,
B3: MaybeList<K3>,
Self: SplitNumerDenom,
Zpk<T2, Z2, P2, K2>: SplitNumerDenom,
<Self as SplitNumerDenom>::OutputNum: ToTf<Complex<K1::Real>, B1, (), (), ()>,
<Zpk<T2, Z2, P2, K2> as SplitNumerDenom>::OutputNum: ToTf<Complex<K2::Real>, B2, (), (), ()>,
Tf<Complex<K1::Real>, B1, ()>: Sub<Tf<Complex<K2::Real>, B2, ()>, Output = Tf<K3, B3, ()>>,
Tf<K3, B3, ()>: ToZpk<Complex<T3::Real>, Z3, (), K3, (), ()>,
<Self as SplitNumerDenom>::OutputDen: Mul<<Zpk<T2, Z2, P2, K2> as SplitNumerDenom>::OutputDen, Output = Zpk<T3, (), P3, K4>>,
Zpk<Complex<T3::Real>, Z3, (), K3>: Mul<Zpk<T3, (), P3, K4>, Output = Zpk<T4, Z4, P4, K5>>,
source§impl<T1, T2, Z, P, K, B, A, S> ToSos<T2, B, A, S, (), ()> for Zpk<T1, Z, P, K>where
T1: ComplexFloat + Into<Complex<T1::Real>>,
T2: ComplexFloat + Into<Complex<T2::Real>> + AddAssign + MulAssign + 'static,
K: ComplexFloat<Real = T1::Real> + Into<T2>,
Z: MaybeList<T1, MaybeSome: StaticMaybe<Z::Some, Maybe<[T2; 3]>: MaybeOr<[T2; 3], B, Output = B>>>,
P: MaybeList<T1, MaybeSome: StaticMaybe<P::Some, Maybe<[T2; 3]>: MaybeOr<[T2; 3], A, Output = A>>>,
B: StaticMaybe<[T2; 3]> + MaybeOwnedList<T2> + MaybeOr<[T2; 3], A, Output: StaticMaybe<[T2; 3], Maybe<Vec<Tf<T2, B, A>>>: MaybeOr<Vec<Tf<T2, B, A>>, S, Output = S>>>,
A: StaticMaybe<[T2; 3]> + MaybeOwnedList<T2>,
S: StaticMaybe<Vec<Tf<T2, B, A>>> + MaybeList<Tf<T2, B, A>>,
Complex<T1::Real>: Into<Complex<T2::Real>>,
Complex<T2::Real>: AddAssign,
T1::Real: Into<T2> + NotVoid,
T2::Real: Into<T2>,
Self: ToZpk<T1, Vec<T1>, Vec<T1>, K, (), ()>,
impl<T1, T2, Z, P, K, B, A, S> ToSos<T2, B, A, S, (), ()> for Zpk<T1, Z, P, K>where
T1: ComplexFloat + Into<Complex<T1::Real>>,
T2: ComplexFloat + Into<Complex<T2::Real>> + AddAssign + MulAssign + 'static,
K: ComplexFloat<Real = T1::Real> + Into<T2>,
Z: MaybeList<T1, MaybeSome: StaticMaybe<Z::Some, Maybe<[T2; 3]>: MaybeOr<[T2; 3], B, Output = B>>>,
P: MaybeList<T1, MaybeSome: StaticMaybe<P::Some, Maybe<[T2; 3]>: MaybeOr<[T2; 3], A, Output = A>>>,
B: StaticMaybe<[T2; 3]> + MaybeOwnedList<T2> + MaybeOr<[T2; 3], A, Output: StaticMaybe<[T2; 3], Maybe<Vec<Tf<T2, B, A>>>: MaybeOr<Vec<Tf<T2, B, A>>, S, Output = S>>>,
A: StaticMaybe<[T2; 3]> + MaybeOwnedList<T2>,
S: StaticMaybe<Vec<Tf<T2, B, A>>> + MaybeList<Tf<T2, B, A>>,
Complex<T1::Real>: Into<Complex<T2::Real>>,
Complex<T2::Real>: AddAssign,
T1::Real: Into<T2> + NotVoid,
T2::Real: Into<T2>,
Self: ToZpk<T1, Vec<T1>, Vec<T1>, K, (), ()>,
source§impl<T1, T2, Z, P, K> ToSs<T2, ArrayBase<OwnedRepr<T2>, Dim<[usize; 2]>>, ArrayBase<OwnedRepr<T2>, Dim<[usize; 2]>>, ArrayBase<OwnedRepr<T2>, Dim<[usize; 2]>>, ArrayBase<OwnedRepr<T2>, Dim<[usize; 2]>>> for Zpk<T1, Z, P, K>where
T1: ComplexFloat,
T2: ComplexFloat,
K: ComplexFloat<Real = T1::Real>,
Z: MaybeList<T1>,
P: MaybeList<T1>,
Self: ToTf<T2, Vec<T2>, Vec<T2>, (), ()>,
Tf<T2, Vec<T2>, Vec<T2>>: ToSs<T2, Array2<T2>, Array2<T2>, Array2<T2>, Array2<T2>>,
Array2<T2>: SsAMatrix<T2, Array2<T2>, Array2<T2>, Array2<T2>> + SsBMatrix<T2, Array2<T2>, Array2<T2>, Array2<T2>> + SsCMatrix<T2, Array2<T2>, Array2<T2>, Array2<T2>> + SsDMatrix<T2, Array2<T2>, Array2<T2>, Array2<T2>>,
impl<T1, T2, Z, P, K> ToSs<T2, ArrayBase<OwnedRepr<T2>, Dim<[usize; 2]>>, ArrayBase<OwnedRepr<T2>, Dim<[usize; 2]>>, ArrayBase<OwnedRepr<T2>, Dim<[usize; 2]>>, ArrayBase<OwnedRepr<T2>, Dim<[usize; 2]>>> for Zpk<T1, Z, P, K>where
T1: ComplexFloat,
T2: ComplexFloat,
K: ComplexFloat<Real = T1::Real>,
Z: MaybeList<T1>,
P: MaybeList<T1>,
Self: ToTf<T2, Vec<T2>, Vec<T2>, (), ()>,
Tf<T2, Vec<T2>, Vec<T2>>: ToSs<T2, Array2<T2>, Array2<T2>, Array2<T2>, Array2<T2>>,
Array2<T2>: SsAMatrix<T2, Array2<T2>, Array2<T2>, Array2<T2>> + SsBMatrix<T2, Array2<T2>, Array2<T2>, Array2<T2>> + SsCMatrix<T2, Array2<T2>, Array2<T2>, Array2<T2>> + SsDMatrix<T2, Array2<T2>, Array2<T2>, Array2<T2>>,
source§impl<'a, T1, T2, Z, Z2, P, P2, K, BB, B, A> ToTf<T2, B, A, (), ()> for Zpk<T1, Z, P, K>where
T1: ComplexFloat,
T2: ComplexFloat<Real = T1::Real> + 'static,
Polynomial<Complex<T2::Real>, Vec<Complex<T2::Real>>>: One,
Polynomial<T2, Vec<T2>>: Mul<Polynomial<T2, [T2; 1]>, Output = Polynomial<T2, Vec<T2>>>,
T1::Real: Into<T2> + 'static,
K: ComplexFloat<Real = T1::Real>,
Z: MaybeList<T1, MaybeSome: StaticMaybe<Z::Some, Maybe<Vec<Complex<T1::Real>>> = Z2>>,
P: MaybeList<T1, MaybeSome: StaticMaybe<P::Some, Maybe<Vec<Complex<T1::Real>>> = P2>>,
B: MaybeList<T2>,
A: MaybeList<T2> + StaticMaybe<Vec<T2>>,
Z2: MaybeList<Complex<T1::Real>, MaybeSome: StaticMaybe<Z2::Some, Maybe<Vec<T2>> = BB>> + Maybe<Vec<Complex<T2::Real>>>,
P2: MaybeList<Complex<T1::Real>, MaybeSome: StaticMaybe<P2::Some, Maybe<Vec<T2>>: MaybeOr<Vec<T2>, A, Output = A>>> + Maybe<Vec<Complex<T2::Real>>>,
BB: MaybeList<T2, Some: List<T2> + Sized, MaybeSome: Sized> + StaticMaybe<Vec<T2>>,
Polynomial<T2, <BB as MaybeContainer<T2>>::Some>: Into<Polynomial<T2, B>>,
Polynomial<T2, [T2; 1]>: Into<Polynomial<T2, B>>,
Self: ToZpk<Complex<T2::Real>, Z2, P2, T2, (), ()>,
impl<'a, T1, T2, Z, Z2, P, P2, K, BB, B, A> ToTf<T2, B, A, (), ()> for Zpk<T1, Z, P, K>where
T1: ComplexFloat,
T2: ComplexFloat<Real = T1::Real> + 'static,
Polynomial<Complex<T2::Real>, Vec<Complex<T2::Real>>>: One,
Polynomial<T2, Vec<T2>>: Mul<Polynomial<T2, [T2; 1]>, Output = Polynomial<T2, Vec<T2>>>,
T1::Real: Into<T2> + 'static,
K: ComplexFloat<Real = T1::Real>,
Z: MaybeList<T1, MaybeSome: StaticMaybe<Z::Some, Maybe<Vec<Complex<T1::Real>>> = Z2>>,
P: MaybeList<T1, MaybeSome: StaticMaybe<P::Some, Maybe<Vec<Complex<T1::Real>>> = P2>>,
B: MaybeList<T2>,
A: MaybeList<T2> + StaticMaybe<Vec<T2>>,
Z2: MaybeList<Complex<T1::Real>, MaybeSome: StaticMaybe<Z2::Some, Maybe<Vec<T2>> = BB>> + Maybe<Vec<Complex<T2::Real>>>,
P2: MaybeList<Complex<T1::Real>, MaybeSome: StaticMaybe<P2::Some, Maybe<Vec<T2>>: MaybeOr<Vec<T2>, A, Output = A>>> + Maybe<Vec<Complex<T2::Real>>>,
BB: MaybeList<T2, Some: List<T2> + Sized, MaybeSome: Sized> + StaticMaybe<Vec<T2>>,
Polynomial<T2, <BB as MaybeContainer<T2>>::Some>: Into<Polynomial<T2, B>>,
Polynomial<T2, [T2; 1]>: Into<Polynomial<T2, B>>,
Self: ToZpk<Complex<T2::Real>, Z2, P2, T2, (), ()>,
source§impl<T1, Z1, P1, K1, T2, Z2, P2, K2> ToZpk<T2, Z2, P2, K2, (), ()> for Zpk<T1, Z1, P1, K1>where
T1: ComplexFloat + Into<T2>,
T2: ComplexFloat,
K1: ComplexFloat<Real = T1::Real> + Into<K2>,
K2: ComplexFloat<Real = T2::Real>,
Z1: MaybeList<T1>,
P1: MaybeList<T1>,
Z2: MaybeList<T2>,
P2: MaybeList<T2>,
Z1::MaybeMapped<T2>: MaybeList<T2>,
P1::MaybeMapped<T2>: MaybeList<T2>,
ProductSequence<T2, Z1::MaybeMapped<T2>>: Into<ProductSequence<T2, Z2>>,
ProductSequence<T2, P1::MaybeMapped<T2>>: Into<ProductSequence<T2, P2>>,
impl<T1, Z1, P1, K1, T2, Z2, P2, K2> ToZpk<T2, Z2, P2, K2, (), ()> for Zpk<T1, Z1, P1, K1>where
T1: ComplexFloat + Into<T2>,
T2: ComplexFloat,
K1: ComplexFloat<Real = T1::Real> + Into<K2>,
K2: ComplexFloat<Real = T2::Real>,
Z1: MaybeList<T1>,
P1: MaybeList<T1>,
Z2: MaybeList<T2>,
P2: MaybeList<T2>,
Z1::MaybeMapped<T2>: MaybeList<T2>,
P1::MaybeMapped<T2>: MaybeList<T2>,
ProductSequence<T2, Z1::MaybeMapped<T2>>: Into<ProductSequence<T2, Z2>>,
ProductSequence<T2, P1::MaybeMapped<T2>>: Into<ProductSequence<T2, P2>>,
impl<T: Copy + ComplexFloat, Z: Copy + MaybeList<T>, P: Copy + MaybeList<T>, K: Copy + ComplexFloat<Real = T::Real>> Copy for Zpk<T, Z, P, K>
impl<T, Z, P, K, R> System for Zpk<T, Z, P, K>
Auto Trait Implementations§
impl<T, Z, P, K> Freeze for Zpk<T, Z, P, K>
impl<T, Z, P, K> NotPolynomial for Zpk<T, Z, P, K>
impl<T, Z, P, K> NotRange for Zpk<T, Z, P, K>
impl<T, Z, P, K> NotVoid for Zpk<T, Z, P, K>where
K: NotVoid,
impl<T, Z, P, K> RefUnwindSafe for Zpk<T, Z, P, K>
impl<T, Z, P, K> Send for Zpk<T, Z, P, K>
impl<T, Z, P, K> Sync for Zpk<T, Z, P, K>
impl<T, Z, P, K> Unpin for Zpk<T, Z, P, K>
impl<T, Z, P, K> UnwindSafe for Zpk<T, Z, P, K>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> ListOrSingle<T> for T
impl<T> ListOrSingle<T> for T
source§impl<'a, S, T, H, W, N> PhaseZ<'a, H, W, N> for Swhere
T: ComplexFloat,
<T as ComplexFloat>::Real: Sum + AddAssign + SubAssign,
S: FreqZ<'a, <H as Container<<T as ComplexFloat>::Real>>::Mapped<Complex<<T as ComplexFloat>::Real>>, W, N, Domain = T> + System,
H: Lists<<T as ComplexFloat>::Real>,
<H as Container<<T as ComplexFloat>::Real>>::Mapped<Complex<<T as ComplexFloat>::Real>>: Lists<Complex<<T as ComplexFloat>::Real>>,
<<H as Container<<T as ComplexFloat>::Real>>::Mapped<Complex<<T as ComplexFloat>::Real>> as MaybeLists<Complex<<T as ComplexFloat>::Real>>>::RowOwned: OwnedList<Complex<<T as ComplexFloat>::Real>>,
<<<H as Container<<T as ComplexFloat>::Real>>::Mapped<Complex<<T as ComplexFloat>::Real>> as MaybeLists<Complex<<T as ComplexFloat>::Real>>>::RowOwned as Container<Complex<<T as ComplexFloat>::Real>>>::Mapped<<T as ComplexFloat>::Real>: OwnedList<<T as ComplexFloat>::Real>,
<<H as Container<<T as ComplexFloat>::Real>>::Mapped<Complex<<T as ComplexFloat>::Real>> as MaybeLists<Complex<<T as ComplexFloat>::Real>>>::RowsMapped<<<<H as Container<<T as ComplexFloat>::Real>>::Mapped<Complex<<T as ComplexFloat>::Real>> as MaybeLists<Complex<<T as ComplexFloat>::Real>>>::RowOwned as Container<Complex<<T as ComplexFloat>::Real>>>::Mapped<<T as ComplexFloat>::Real>>: Into<H>,
W: List<<T as ComplexFloat>::Real>,
N: Maybe<usize>,
impl<'a, S, T, H, W, N> PhaseZ<'a, H, W, N> for Swhere
T: ComplexFloat,
<T as ComplexFloat>::Real: Sum + AddAssign + SubAssign,
S: FreqZ<'a, <H as Container<<T as ComplexFloat>::Real>>::Mapped<Complex<<T as ComplexFloat>::Real>>, W, N, Domain = T> + System,
H: Lists<<T as ComplexFloat>::Real>,
<H as Container<<T as ComplexFloat>::Real>>::Mapped<Complex<<T as ComplexFloat>::Real>>: Lists<Complex<<T as ComplexFloat>::Real>>,
<<H as Container<<T as ComplexFloat>::Real>>::Mapped<Complex<<T as ComplexFloat>::Real>> as MaybeLists<Complex<<T as ComplexFloat>::Real>>>::RowOwned: OwnedList<Complex<<T as ComplexFloat>::Real>>,
<<<H as Container<<T as ComplexFloat>::Real>>::Mapped<Complex<<T as ComplexFloat>::Real>> as MaybeLists<Complex<<T as ComplexFloat>::Real>>>::RowOwned as Container<Complex<<T as ComplexFloat>::Real>>>::Mapped<<T as ComplexFloat>::Real>: OwnedList<<T as ComplexFloat>::Real>,
<<H as Container<<T as ComplexFloat>::Real>>::Mapped<Complex<<T as ComplexFloat>::Real>> as MaybeLists<Complex<<T as ComplexFloat>::Real>>>::RowsMapped<<<<H as Container<<T as ComplexFloat>::Real>>::Mapped<Complex<<T as ComplexFloat>::Real>> as MaybeLists<Complex<<T as ComplexFloat>::Real>>>::RowOwned as Container<Complex<<T as ComplexFloat>::Real>>>::Mapped<<T as ComplexFloat>::Real>>: Into<H>,
W: List<<T as ComplexFloat>::Real>,
N: Maybe<usize>,
source§impl<'a, S, T, H, W, N> RealPhaseZ<'a, H, W, N> for Swhere
T: Float + FloatConst + Sum + AddAssign + SubAssign,
S: RealFreqZ<'a, <H as Container<T>>::Mapped<Complex<T>>, W, N, Domain = T> + System,
H: Lists<T>,
<H as Container<T>>::Mapped<Complex<T>>: Lists<Complex<T>>,
<<H as Container<T>>::Mapped<Complex<T>> as MaybeLists<Complex<T>>>::RowOwned: OwnedList<Complex<T>>,
<<<H as Container<T>>::Mapped<Complex<T>> as MaybeLists<Complex<T>>>::RowOwned as Container<Complex<T>>>::Mapped<T>: OwnedList<T>,
<<H as Container<T>>::Mapped<Complex<T>> as MaybeLists<Complex<T>>>::RowsMapped<<<<H as Container<T>>::Mapped<Complex<T>> as MaybeLists<Complex<T>>>::RowOwned as Container<Complex<T>>>::Mapped<T>>: Into<H>,
W: List<T>,
N: Maybe<usize>,
impl<'a, S, T, H, W, N> RealPhaseZ<'a, H, W, N> for Swhere
T: Float + FloatConst + Sum + AddAssign + SubAssign,
S: RealFreqZ<'a, <H as Container<T>>::Mapped<Complex<T>>, W, N, Domain = T> + System,
H: Lists<T>,
<H as Container<T>>::Mapped<Complex<T>>: Lists<Complex<T>>,
<<H as Container<T>>::Mapped<Complex<T>> as MaybeLists<Complex<T>>>::RowOwned: OwnedList<Complex<T>>,
<<<H as Container<T>>::Mapped<Complex<T>> as MaybeLists<Complex<T>>>::RowOwned as Container<Complex<T>>>::Mapped<T>: OwnedList<T>,
<<H as Container<T>>::Mapped<Complex<T>> as MaybeLists<Complex<T>>>::RowsMapped<<<<H as Container<T>>::Mapped<Complex<T>> as MaybeLists<Complex<T>>>::RowOwned as Container<Complex<T>>>::Mapped<T>>: Into<H>,
W: List<T>,
N: Maybe<usize>,
fn real_phasez(&'a self, n: N, reference: PhaseUnwrapReference) -> (H, W)
source§impl<T, E> ResultOrOk<T, E> for T
impl<T, E> ResultOrOk<T, E> for T
source§impl<Some> StaticMaybe<Some> for Some
impl<Some> StaticMaybe<Some> for Some
const IS_SOME: bool = true
const IS_NONE: bool = false
type None = ()
type Some = Some
type Opposite = ()
type Maybe<M: StaticMaybe<M> + ?Sized> = <M as StaticMaybe<M>>::Some
type MaybeOr<M: ?Sized, O: ?Sized> = M
fn maybe_from_fn<F>(func: F) -> Somewhere
F: FnOnce() -> Some,
fn maybe_or_from_fn<M, O>( maybe: M, _or: O ) -> <Some as StaticMaybe<Some>>::MaybeOr<<M as FnOnce()>::Output, <O as FnOnce()>::Output>
fn maybe_map<F>( self, map: F ) -> <Some as StaticMaybe<Some>>::Maybe<<F as FnOnce(Some)>::Output>
source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moresource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.