pub struct FixedRowSpaceProjector { /* private fields */ }Expand description
The fixed row-space complement a moving-design derivative is represented in.
A smooth collection chooses a row-space constraint block C once, while a
spatial hyperparameter move changes the term-local design X(psi). The
collection freezes one coefficient chart at its reference realization;
re-whitening it at every psi would make arbitrary right-coordinate motion
part of the statistical derivative. In the frozen chart the canonical
derivative is instead
P_C X_psi T, where P_C = I - Q_C Q_C^T.
Q_C is formed from the thin SVD of column-normalized C, so rescaling one
constraint column cannot change the projector or its numerical rank. The
object is deliberately generic: it composes a fixed left projector with any
design jet without teaching kernel formulae about collection ownership.
Implementations§
Source§impl FixedRowSpaceProjector
impl FixedRowSpaceProjector
pub fn from_constraint_block( constraint: ArrayView2<'_, f64>, ) -> Result<Self, BasisError>
pub fn nrows(&self) -> usize
pub fn rank(&self) -> usize
pub fn project_matrix_in_place( &self, values: &mut Array2<f64>, ) -> Result<(), BasisError>
Sourcepub fn project_design(
&self,
design: DesignMatrix,
context: &str,
) -> Result<(DesignMatrix, Array2<f64>), BasisError>
pub fn project_design( &self, design: DesignMatrix, context: &str, ) -> Result<(DesignMatrix, Array2<f64>), BasisError>
Project a possibly-lazy value design into this fixed row-space complement, retaining lazy storage and returning the correction in the ORIGINAL constraint block’s coordinates.
For D = X T0, this returns
D_projected = D - C R = P_C D,
with R satisfying C R = Q_C Q_C^T D. The cross Q_C^T D is
streamed in bounded row chunks; the projected design is represented as
one block operator, so an outer-psi replay never materializes n x p.
Trait Implementations§
Source§impl Clone for FixedRowSpaceProjector
impl Clone for FixedRowSpaceProjector
Source§fn clone(&self) -> FixedRowSpaceProjector
fn clone(&self) -> FixedRowSpaceProjector
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for FixedRowSpaceProjector
impl RefUnwindSafe for FixedRowSpaceProjector
impl Send for FixedRowSpaceProjector
impl Sync for FixedRowSpaceProjector
impl Unpin for FixedRowSpaceProjector
impl UnsafeUnpin for FixedRowSpaceProjector
impl UnwindSafe for FixedRowSpaceProjector
Blanket Implementations§
impl<T> Allocation for T
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T, U> Imply<T> for U
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
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>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
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
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.