Class OpenMapRealVector
- All Implemented Interfaces:
Serializable
RealVector interface with a
OpenIntToDoubleHashMap backing store.
Caveat: This implementation assumes that, for any x,
the equality x * 0d == 0d holds. But it is is not true for
NaN. Moreover, zero entries will lose their sign.
Some operations (that involve NaN and/or infinities) may
thus give incorrect results, like multiplications, divisions or
functions mapping.
- Since:
- 2.0
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected classImplementation ofEntryoptimized for OpenMap.protected classIterator class to do iteration over just the non-zero elements.Nested classes/interfaces inherited from class org.apache.commons.math3.linear.RealVector
RealVector.Entry, RealVector.SparseEntryIterator -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final doubleDefault Tolerance for having a value considered zero. -
Constructor Summary
ConstructorsModifierConstructorDescriptionBuild a 0-length vector.OpenMapRealVector(double[] values) Create from an array.OpenMapRealVector(double[] values, double epsilon) Create from an array, specifying zero tolerance.OpenMapRealVector(int dimension) Construct a vector of zeroes.OpenMapRealVector(int dimension, double epsilon) Construct a vector of zeroes, specifying zero tolerance.OpenMapRealVector(int dimension, int expectedSize) Build a vector with known the sparseness (for advanced use only).OpenMapRealVector(int dimension, int expectedSize, double epsilon) Build a vector with known the sparseness and zero tolerance setting (for advanced use only).OpenMapRealVector(Double[] values) Create from an array.OpenMapRealVector(Double[] values, double epsilon) Create from an array.Copy constructor.protectedOpenMapRealVector(OpenMapRealVector v, int resize) Build a resized vector, for use with append.Generic copy constructor. -
Method Summary
Modifier and TypeMethodDescriptionOptimized method to add two OpenMapRealVectors.add(RealVector v) Compute the sum of this vector andv.append(double d) Construct a new vector by appending a double to this vector.Optimized method to append a OpenMapRealVector.append(RealVector v) Construct a new vector by appending a vector to this vector.copy()Returns a (deep) copy of this vector.doubleDeprecated.as of 3.1 (to be removed in 4.0).Element-by-element division.Element-by-element multiplication.booleanTest for the equality of two real vectors.intReturns the size of the vector.doubleOptimized method to compute distance.doubleDistance between two vectors.doublegetEntry(int index) Return the entry at the specified index.doubleDistance between two vectors.doubleDistance between two vectors.doubleDistance between two vectors.doublegetSubVector(int index, int n) Get a subvector from consecutive elements.inthashCode().protected booleanisDefaultValue(double value) Determine if this value is within epsilon of zero.booleanCheck whether any coordinate of this vector is infinite and none areNaN.booleanisNaN()Check whether any coordinate of this vector isNaN.mapAdd(double d) Add a value to each entry.mapAddToSelf(double d) Add a value to each entry.voidset(double value) Set all elements to a single value.voidsetEntry(int index, double value) Set a single element.voidsetSubVector(int index, RealVector v) Set a sequence of consecutive elements.Create a sparse iterator over the vector, which may omit some entries.Optimized method to subtract OpenMapRealVectors.Subtractvfrom this vector.double[]toArray()Convert the vector to an array ofdoubles.voidunitize()Converts this vector into a unit vector.Creates a unit vector pointing in the direction of this vector.Methods inherited from class org.apache.commons.math3.linear.RealVector
addToEntry, checkIndex, checkIndices, checkVectorDimensions, checkVectorDimensions, combine, combineToSelf, cosine, dotProduct, getL1Norm, getLInfNorm, getMaxIndex, getMaxValue, getMinIndex, getMinValue, getNorm, iterator, map, mapDivide, mapDivideToSelf, mapMultiply, mapMultiplyToSelf, mapSubtract, mapSubtractToSelf, mapToSelf, outerProduct, projection, unmodifiableRealVector, walkInDefaultOrder, walkInDefaultOrder, walkInDefaultOrder, walkInDefaultOrder, walkInOptimizedOrder, walkInOptimizedOrder, walkInOptimizedOrder, walkInOptimizedOrder
-
Field Details
-
DEFAULT_ZERO_TOLERANCE
public static final double DEFAULT_ZERO_TOLERANCEDefault Tolerance for having a value considered zero.- See Also:
-
-
Constructor Details
-
OpenMapRealVector
public OpenMapRealVector()Build a 0-length vector. Zero-length vectors may be used to initialized construction of vectors by data gathering. We start with zero-length and use either theOpenMapRealVector(OpenMapRealVector, int)constructor or one of theappendmethod (append(double),append(RealVector)) to gather data into this vector. -
OpenMapRealVector
public OpenMapRealVector(int dimension) Construct a vector of zeroes.- Parameters:
dimension- Size of the vector.
-
OpenMapRealVector
public OpenMapRealVector(int dimension, double epsilon) Construct a vector of zeroes, specifying zero tolerance.- Parameters:
dimension- Size of the vector.epsilon- Tolerance below which a value considered zero.
-
OpenMapRealVector
Build a resized vector, for use with append.- Parameters:
v- Original vector.resize- Amount to add.
-
OpenMapRealVector
public OpenMapRealVector(int dimension, int expectedSize) Build a vector with known the sparseness (for advanced use only).- Parameters:
dimension- Size of the vector.expectedSize- The expected number of non-zero entries.
-
OpenMapRealVector
public OpenMapRealVector(int dimension, int expectedSize, double epsilon) Build a vector with known the sparseness and zero tolerance setting (for advanced use only).- Parameters:
dimension- Size of the vector.expectedSize- Expected number of non-zero entries.epsilon- Tolerance below which a value is considered zero.
-
OpenMapRealVector
public OpenMapRealVector(double[] values) Create from an array. Only non-zero entries will be stored.- Parameters:
values- Set of values to create from.
-
OpenMapRealVector
public OpenMapRealVector(double[] values, double epsilon) Create from an array, specifying zero tolerance. Only non-zero entries will be stored.- Parameters:
values- Set of values to create from.epsilon- Tolerance below which a value is considered zero.
-
OpenMapRealVector
Create from an array. Only non-zero entries will be stored.- Parameters:
values- The set of values to create from
-
OpenMapRealVector
Create from an array. Only non-zero entries will be stored.- Parameters:
values- Set of values to create from.epsilon- Tolerance below which a value is considered zero.
-
OpenMapRealVector
Copy constructor.- Parameters:
v- Instance to copy from.
-
OpenMapRealVector
Generic copy constructor.- Parameters:
v- Instance to copy from.
-
-
Method Details
-
isDefaultValue
protected boolean isDefaultValue(double value) Determine if this value is within epsilon of zero.- Parameters:
value- Value to test- Returns:
trueif this value is within epsilon to zero,falseotherwise.- Since:
- 2.1
-
add
Compute the sum of this vector andv. Returns a new vector. Does not change instance data.- Overrides:
addin classRealVector- Parameters:
v- Vector to be added.- Returns:
this+v.- Throws:
DimensionMismatchException- ifvis not the same size asthisvector.
-
add
Optimized method to add two OpenMapRealVectors. It copies the larger vector, then iterates over the smaller.- Parameters:
v- Vector to add.- Returns:
- the sum of
thisandv. - Throws:
DimensionMismatchException- if the dimensions do not match.
-
append
Optimized method to append a OpenMapRealVector.- Parameters:
v- vector to append- Returns:
- The result of appending
vto self
-
append
Construct a new vector by appending a vector to this vector.- Specified by:
appendin classRealVector- Parameters:
v- vector to append to this one.- Returns:
- a new vector.
-
append
Construct a new vector by appending a double to this vector.- Specified by:
appendin classRealVector- Parameters:
d- double to append.- Returns:
- a new vector.
-
copy
Returns a (deep) copy of this vector.- Specified by:
copyin classRealVector- Returns:
- a vector copy.
- Since:
- 2.1
-
dotProduct
Deprecated.as of 3.1 (to be removed in 4.0). The computation is performed by the parent class. The method must be kept to maintain backwards compatibility.Computes the dot product. Note that the computation is now performed in the parent class: no performance improvement is to be expected from this overloaded method. The previous implementation was buggy and cannot be easily fixed (see MATH-795).- Parameters:
v- Vector.- Returns:
- the dot product of this vector with
v. - Throws:
DimensionMismatchException- ifvis not the same size asthisvector.
-
ebeDivide
Element-by-element division.- Specified by:
ebeDividein classRealVector- Parameters:
v- Vector by which instance elements must be divided.- Returns:
- a vector containing this[i] / v[i] for all i.
- Throws:
DimensionMismatchException- ifvis not the same size asthisvector.
-
ebeMultiply
Element-by-element multiplication.- Specified by:
ebeMultiplyin classRealVector- Parameters:
v- Vector by which instance elements must be multiplied- Returns:
- a vector containing this[i] * v[i] for all i.
- Throws:
DimensionMismatchException- ifvis not the same size asthisvector.
-
getSubVector
public OpenMapRealVector getSubVector(int index, int n) throws NotPositiveException, OutOfRangeException Get a subvector from consecutive elements.- Specified by:
getSubVectorin classRealVector- Parameters:
index- index of first element.n- number of elements to be retrieved.- Returns:
- a vector containing n elements.
- Throws:
NotPositiveException- if the number of elements is not positive.OutOfRangeException- if the index is not valid.
-
getDimension
public int getDimension()Returns the size of the vector.- Specified by:
getDimensionin classRealVector- Returns:
- the size of this vector.
-
getDistance
Optimized method to compute distance.- Parameters:
v- Vector to compute distance to.- Returns:
- the distance from
thisandv. - Throws:
DimensionMismatchException- if the dimensions do not match.
-
getDistance
Distance between two vectors.This method computes the distance consistent with the L2 norm, i.e. the square root of the sum of element differences, or Euclidean distance.
- Overrides:
getDistancein classRealVector- Parameters:
v- Vector to which distance is requested.- Returns:
- the distance between two vectors.
- Throws:
DimensionMismatchException- ifvis not the same size asthisvector.- See Also:
-
getEntry
Return the entry at the specified index.- Specified by:
getEntryin classRealVector- Parameters:
index- Index location of entry to be fetched.- Returns:
- the vector entry at
index. - Throws:
OutOfRangeException- if the index is not valid.- See Also:
-
getL1Distance
Distance between two vectors. This method computes the distance consistent with L1 norm, i.e. the sum of the absolute values of elements differences.- Parameters:
v- Vector to which distance is requested.- Returns:
- distance between this vector and
v. - Throws:
DimensionMismatchException- if the dimensions do not match.
-
getL1Distance
Distance between two vectors.This method computes the distance consistent with L1 norm, i.e. the sum of the absolute values of the elements differences.
- Overrides:
getL1Distancein classRealVector- Parameters:
v- Vector to which distance is requested.- Returns:
- the distance between two vectors.
- Throws:
DimensionMismatchException- ifvis not the same size asthisvector.
-
getLInfDistance
Distance between two vectors.This method computes the distance consistent with L∞ norm, i.e. the max of the absolute values of element differences.
- Overrides:
getLInfDistancein classRealVector- Parameters:
v- Vector to which distance is requested.- Returns:
- the distance between two vectors.
- Throws:
DimensionMismatchException- ifvis not the same size asthisvector.- See Also:
-
isInfinite
public boolean isInfinite()Check whether any coordinate of this vector is infinite and none areNaN.- Specified by:
isInfinitein classRealVector- Returns:
trueif any coordinate of this vector is infinite and none areNaN,falseotherwise.
-
isNaN
public boolean isNaN()Check whether any coordinate of this vector isNaN.- Specified by:
isNaNin classRealVector- Returns:
trueif any coordinate of this vector isNaN,falseotherwise.
-
mapAdd
Add a value to each entry. Returns a new vector. Does not change instance data.- Overrides:
mapAddin classRealVector- Parameters:
d- Value to be added to each entry.- Returns:
this+d.
-
mapAddToSelf
Add a value to each entry. The instance is changed in-place.- Overrides:
mapAddToSelfin classRealVector- Parameters:
d- Value to be added to each entry.- Returns:
this.
-
setEntry
Set a single element.- Specified by:
setEntryin classRealVector- Parameters:
index- element index.value- new value for the element.- Throws:
OutOfRangeException- if the index is not valid.- See Also:
-
setSubVector
Set a sequence of consecutive elements.- Specified by:
setSubVectorin classRealVector- Parameters:
index- index of first element to be set.v- vector containing the values to set.- Throws:
OutOfRangeException- if the index is not valid.
-
set
public void set(double value) Set all elements to a single value.- Overrides:
setin classRealVector- Parameters:
value- Single value to set for all elements.
-
subtract
Optimized method to subtract OpenMapRealVectors.- Parameters:
v- Vector to subtract fromthis.- Returns:
- the difference of
thisandv. - Throws:
DimensionMismatchException- if the dimensions do not match.
-
subtract
Subtractvfrom this vector. Returns a new vector. Does not change instance data.- Overrides:
subtractin classRealVector- Parameters:
v- Vector to be subtracted.- Returns:
this-v.- Throws:
DimensionMismatchException- ifvis not the same size asthisvector.
-
unitVector
Creates a unit vector pointing in the direction of this vector. The instance is not changed by this method.- Overrides:
unitVectorin classRealVector- Returns:
- a unit vector pointing in direction of this vector.
- Throws:
MathArithmeticException- if the norm is zero.
-
unitize
Converts this vector into a unit vector. The instance itself is changed by this method.- Overrides:
unitizein classRealVector- Throws:
MathArithmeticException- if the norm is zero.
-
toArray
public double[] toArray()Convert the vector to an array ofdoubles. The array is independent from this vector data: the elements are copied.- Overrides:
toArrayin classRealVector- Returns:
- an array containing a copy of the vector elements.
-
hashCode
public int hashCode(). This method must be overriden by concrete subclasses ofRealVector(current implementation throws an exception). Implementation Note: This works on exact values, and as a result it is possible fora.subtract(b)to be the zero vector, whilea.hashCode() != b.hashCode().- Overrides:
hashCodein classRealVector
-
equals
Test for the equality of two real vectors. If all coordinates of two real vectors are exactly the same, and none are
NaN, the two real vectors are considered to be equal.NaNcoordinates are considered to affect globally the vector and be equals to each other - i.e, if either (or all) coordinates of the real vector are equal toNaN, the real vector is equal to a vector with allNaNcoordinates.This method must be overriden by concrete subclasses of
Implementation Note: This performs an exact comparison, and as a result it is possible forRealVector(the current implementation throws an exception).a.subtract(b} to be the zero vector, whilea.equals(b) == false.- Overrides:
equalsin classRealVector- Parameters:
obj- Object to test for equality.- Returns:
trueif two vector objects are equal,falseifotheris null, not an instance ofRealVector, or not equal to thisRealVectorinstance.
-
getSparsity
public double getSparsity()- Returns:
- the percentage of none zero elements as a decimal percent.
- Since:
- 2.2
-
sparseIterator
Create a sparse iterator over the vector, which may omit some entries. The ommitted entries are either exact zeroes (for dense implementations) or are the entries which are not stored (for real sparse vectors). No guarantees are made about order of iteration.Note: derived classes are required to return an
Iteratorthat returns non-nullRealVector.Entryobjects as long asIterator.hasNext()returnstrue.- Overrides:
sparseIteratorin classRealVector- Returns:
- a sparse iterator.
-