@CodeReview(reviewer="Kevin R. Dixon",date="2008-07-22",changesNeeded=false,comments={"Moved previous code review to annotation.","Fixed a few typos in javadoc.","Code looks fine."}) @CodeReview(reviewer="Justin Basilico",date="2006-10-02",changesNeeded=false,comments="Minor documentation updates.") public class VectorizablePerturber extends AbstractRandomized implements Perturber<Vectorizable>
random| Constructor and Description |
|---|
VectorizablePerturber(java.util.Random random,
Matrix covariance)
Creates a new instance of VectorizablePerturber.
|
| Modifier and Type | Method and Description |
|---|---|
VectorizablePerturber |
clone()
This makes public the clone method on the
Object class and
removes the exception that it throws. |
Matrix |
getCovarianceSqrt()
Gets the covariance square root matrix.
|
Vectorizable |
perturb(Vectorizable input)
Perturbs the given Vectorizable by cloning it and then operating on
the clone by side-effect.
|
Vector |
perturbVector(Vector input)
Perturbs the given vector using the underlying random number generator.
|
void |
setCovariance(Matrix covariance)
Sets the covariance of the perturber.
|
protected void |
setCovarianceSqrt(Matrix covarianceSqrt)
Sets the covariance square root matrix.
|
getRandom, setRandompublic VectorizablePerturber(java.util.Random random,
Matrix covariance)
random - The random number generator to use.covariance - The covariance matrix to use in perturbing. It must
be a symmetric matrix.public VectorizablePerturber clone()
AbstractCloneableSerializableObject class and
removes the exception that it throws. Its default behavior is to
automatically create a clone of the exact type of object that the
clone is called on and to copy all primitives but to keep all references,
which means it is a shallow copy.
Extensions of this class may want to override this method (but call
super.clone() to implement a "smart copy". That is, to target
the most common use case for creating a copy of the object. Because of
the default behavior being a shallow copy, extending classes only need
to handle fields that need to have a deeper copy (or those that need to
be reset). Some of the methods in ObjectUtil may be helpful in
implementing a custom clone method.
Note: The contract of this method is that you must use
super.clone() as the basis for your implementation.clone in interface CloneableSerializableclone in class AbstractRandomizedpublic Vectorizable perturb(Vectorizable input)
perturb in interface Perturber<Vectorizable>input - The Vectorizable to perturb.public Vector perturbVector(Vector input)
input - The vector to perturb.public void setCovariance(Matrix covariance)
covariance - The covariance matrix.public Matrix getCovarianceSqrt()
protected void setCovarianceSqrt(Matrix covarianceSqrt)
covarianceSqrt - The new covariance square root matrix.