Enum varpro::util::Weights

source ·
pub enum Weights<ScalarType, D>
where ScalarType: Scalar + ComplexField, D: Dim, DefaultAllocator: Allocator<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>
where ScalarType: Scalar + ComplexField, D: Dim, DefaultAllocator: Allocator<ScalarType, D>,

source

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

source

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

source§

fn clone(&self) -> Weights<ScalarType, D>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<ScalarType, D> Debug for Weights<ScalarType, D>
where ScalarType: Scalar + ComplexField + Debug, D: Dim + Debug, DefaultAllocator: Allocator<ScalarType, D>,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<ScalarType, D> Default for Weights<ScalarType, D>
where ScalarType: Scalar + ComplexField, D: Dim, DefaultAllocator: Allocator<ScalarType, D>,

Get a variant representing unit weights (i.e. unweighted problem)

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<ScalarType, D> From<DiagMatrix<ScalarType, D>> for Weights<ScalarType, D>
where ScalarType: Scalar + ComplexField, D: Dim, DefaultAllocator: Allocator<ScalarType, D>,

create diagonal weights using the given diagonal matrix

source§

fn from(diag: DiagMatrix<ScalarType, D>) -> Self

Converts to this type from the input type.
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>,

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)

§

type Output = Matrix<ScalarType, R, C, S>

The resulting type after applying the * operator.
source§

fn mul(self, rhs: Matrix<ScalarType, R, C, S>) -> Self::Output

Performs the * operation. Read more
source§

impl<ScalarType, D> PartialEq for Weights<ScalarType, D>
where ScalarType: Scalar + ComplexField + PartialEq, D: Dim + PartialEq, DefaultAllocator: Allocator<ScalarType, D>,

source§

fn eq(&self, other: &Weights<ScalarType, D>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<ScalarType, D> Eq for Weights<ScalarType, D>
where ScalarType: Scalar + ComplexField + Eq, D: Dim + Eq, DefaultAllocator: Allocator<ScalarType, D>,

source§

impl<ScalarType, D> StructuralPartialEq for Weights<ScalarType, D>
where ScalarType: Scalar + ComplexField, D: Dim, DefaultAllocator: Allocator<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> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
source§

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

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> Scalar for T
where T: 'static + Clone + PartialEq + Debug,