pub enum Weights<ScalarType, D>{
Unit,
Diagonal(DiagMatrix<ScalarType, D>),
}
Expand description
a variant for different weights that can be applied to a least squares problem Right now covers only either unit weights (i.e. unweighted problem) or a diagonal matrix for the weights. Can easily be extended in the future, because this structure offers an interface for matrix-matrix multiplication and matrix-vector multiplication
Variants§
Unit
unit weights, which means the problem is unweighted
Diagonal(DiagMatrix<ScalarType, D>)
the weights are represented by a diagonal matrix
Implementations§
source§impl<ScalarType, D> Weights<ScalarType, D>
impl<ScalarType, D> Weights<ScalarType, D>
sourcepub fn diagonal(diagonal: OVector<ScalarType, D>) -> Self
pub fn diagonal(diagonal: OVector<ScalarType, D>) -> Self
create diagonal weights with the given diagonal elements of a matrix. The resulting diagonal matrix is a square matrix with the given diagonal elements and all off-diagonal elements set to zero Make sure that the dimensions of the weights match the data that they should be applied to
sourcepub fn is_size_correct_for_data_length(&self, data_len: usize) -> bool
pub fn is_size_correct_for_data_length(&self, data_len: usize) -> bool
check that the weights are appropriately sized for the given data vector, so that they can be applied without panic. For unit weights this is always true, but for diagonal weights it is not.
§Arguments
data_len
: the number of elements in the data vector
Trait Implementations§
source§impl<ScalarType, D> Clone for Weights<ScalarType, D>where
ScalarType: Scalar + ComplexField + Clone,
D: Dim + Clone,
DefaultAllocator: Allocator<ScalarType, D>,
impl<ScalarType, D> Clone for Weights<ScalarType, D>where
ScalarType: Scalar + ComplexField + Clone,
D: Dim + Clone,
DefaultAllocator: Allocator<ScalarType, D>,
source§impl<ScalarType, D> Debug for Weights<ScalarType, D>where
ScalarType: Scalar + ComplexField + Debug,
D: Dim + Debug,
DefaultAllocator: Allocator<ScalarType, D>,
impl<ScalarType, D> Debug for Weights<ScalarType, D>where
ScalarType: Scalar + ComplexField + Debug,
D: Dim + Debug,
DefaultAllocator: Allocator<ScalarType, D>,
source§impl<ScalarType, D> Default for Weights<ScalarType, D>
impl<ScalarType, D> Default for Weights<ScalarType, D>
Get a variant representing unit weights (i.e. unweighted problem)
source§impl<ScalarType, D> From<DiagMatrix<ScalarType, D>> for Weights<ScalarType, D>
impl<ScalarType, D> From<DiagMatrix<ScalarType, D>> for Weights<ScalarType, D>
create diagonal weights using the given diagonal matrix
source§fn from(diag: DiagMatrix<ScalarType, D>) -> Self
fn from(diag: DiagMatrix<ScalarType, D>) -> Self
source§impl<ScalarType, R, C, S> Mul<Matrix<ScalarType, R, C, S>> for &Weights<ScalarType, R>where
ScalarType: ClosedMul + Scalar + ComplexField,
C: Dim,
R: Dim,
S: RawStorageMut<ScalarType, R, C>,
DefaultAllocator: Allocator<ScalarType, R> + Allocator<ScalarType, R, C>,
impl<ScalarType, R, C, S> Mul<Matrix<ScalarType, R, C, S>> for &Weights<ScalarType, R>where
ScalarType: ClosedMul + Scalar + ComplexField,
C: Dim,
R: Dim,
S: RawStorageMut<ScalarType, R, C>,
DefaultAllocator: Allocator<ScalarType, R> + Allocator<ScalarType, R, C>,
A convenience method that allows to multiply weights to a matrix from the left. This performs the matrix multiplication corresponding to the weight matrix. However, since the method knows e.g. if the weights are diagonal or unit it can take shortcuts and make the operation more efficient. It is a no-op if the weights are unit.
§Panics
If the matrix matrix multiplication fails because of incorrect dimensions. (unit weights never panic)
source§impl<ScalarType, D> PartialEq for Weights<ScalarType, D>where
ScalarType: Scalar + ComplexField + PartialEq,
D: Dim + PartialEq,
DefaultAllocator: Allocator<ScalarType, D>,
impl<ScalarType, D> PartialEq for Weights<ScalarType, D>where
ScalarType: Scalar + ComplexField + PartialEq,
D: Dim + PartialEq,
DefaultAllocator: Allocator<ScalarType, D>,
impl<ScalarType, D> Eq for Weights<ScalarType, D>where
ScalarType: Scalar + ComplexField + Eq,
D: Dim + Eq,
DefaultAllocator: Allocator<ScalarType, D>,
impl<ScalarType, D> StructuralPartialEq for Weights<ScalarType, D>
Auto Trait Implementations§
impl<ScalarType, D> !Freeze for Weights<ScalarType, D>
impl<ScalarType, D> !RefUnwindSafe for Weights<ScalarType, D>
impl<ScalarType, D> !Send for Weights<ScalarType, D>
impl<ScalarType, D> !Sync for Weights<ScalarType, D>
impl<ScalarType, D> !Unpin for Weights<ScalarType, D>
impl<ScalarType, D> !UnwindSafe for Weights<ScalarType, D>
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
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.