@Shareable public class UnitVectorNormalizer extends AbstractVectorNormalizer implements java.io.Serializable
Vector normalizer that scales a vector by the factor needed to scale the reference vector to a unit vector. If the length of the reference vector is 0, no normalization is applied.
Constructor and Description |
---|
UnitVectorNormalizer()
Create a unit vector normalizer with a tolerance of 1.0e-6.
|
UnitVectorNormalizer(double t)
Create a unit vector normalizer a specified tolerance around 0.
|
Modifier and Type | Method and Description |
---|---|
InvertibleFunction<Long2DoubleMap,Long2DoubleMap> |
makeTransformation(Long2DoubleMap reference)
Create a vector transformation that normalizes and denormalizes vectors with respect to a reference vector.
|
@Inject public UnitVectorNormalizer()
Create a unit vector normalizer with a tolerance of 1.0e-6.
public UnitVectorNormalizer(double t)
Create a unit vector normalizer a specified tolerance around 0. Any vector norm whose absolute value is less than t is converted to a no-op.
t
- The error tolerance for 0-checking.public InvertibleFunction<Long2DoubleMap,Long2DoubleMap> makeTransformation(Long2DoubleMap reference)
VectorNormalizer
Create a vector transformation that normalizes and denormalizes vectors with respect to a reference vector. The reference vector is used to compute any data needed for the normalization. For example, a mean-centering normalization will subtract the mean of the reference vector from any vector to which it is applied, and add back the reference mean when it is unapplied.
This allows transformations to be applied multiple times to different vectors and also unapplied.
If the reference vector is empty, the returned transformation should be the identity transform. Results are undefined if the reference vector is not complete or contains NaN values.
If the normalization needs to retain a copy of the sparse vector, it will take an immutable copy.
makeTransformation
in interface VectorNormalizer
reference
- The reference vector.