de.lmu.ifi.dbs.elki.distance.distancevalue
Class SubspaceDistance

java.lang.Object
  extended by de.lmu.ifi.dbs.elki.distance.distancevalue.AbstractDistance<SubspaceDistance>
      extended by de.lmu.ifi.dbs.elki.distance.distancevalue.SubspaceDistance
All Implemented Interfaces:
Distance<SubspaceDistance>, Externalizable, Serializable, Comparable<SubspaceDistance>

public class SubspaceDistance
extends AbstractDistance<SubspaceDistance>

The subspace distance is a special distance that indicates the dissimilarity between subspaces of equal dimensionality. The subspace distance between two points is a pair consisting of the distance between the two subspaces spanned by the strong eigenvectors of the two points and the affine distance between the two subspaces.

See Also:
Serialized Form

Field Summary
private  double affineDistance
          The affine distance.
static SubspaceDistance FACTORY
          The static factory instance
static String SEPARATOR
          Indicates a separator.
private static long serialVersionUID
          Serial version number.
static Pattern SUBSPACE_PATTERN
          The pattern for parsing subspace values
private  double subspaceDistance
          The subspace distance.
 
Fields inherited from class de.lmu.ifi.dbs.elki.distance.distancevalue.AbstractDistance
DOUBLE_PATTERN, INFINITY_PATTERN, INTEGER_PATTERN
 
Constructor Summary
SubspaceDistance()
          Empty constructor for serialization purposes.
SubspaceDistance(double subspaceDistance, double affineDistance)
          Constructs a new SubspaceDistance object consisting of the specified subspace distance and affine distance.
 
Method Summary
 int compareTo(SubspaceDistance other)
          Compares this SubspaceDistance with the given SubspaceDistance wrt the represented subspace distance values.
 int externalizableSize()
          Returns the number of Bytes this distance uses if it is written to an external file.
 double getAffineDistance()
          Returns the value of the affine distance.
 Pattern getPattern()
          Get the pattern accepted by this distance
 double getSubspaceDistance()
          Returns the value of the subspace distance.
 int hashCode()
          Any extending class should implement a proper hashCode method.
 SubspaceDistance infiniteDistance()
          Provides an infinite distance.
 SubspaceDistance minus(SubspaceDistance distance)
          Returns a new Distance by subtracting the given distance from this distance.
 SubspaceDistance nullDistance()
          Provides a null distance.
 SubspaceDistance parseString(String val)
          Provides a measurement suitable to this measurement function based on the given pattern.
 SubspaceDistance plus(SubspaceDistance distance)
          Returns a new distance as sum of this distance and the given distance.
 void readExternal(ObjectInput in)
          Reads the subspace distance value and the affine distance value of this SubspaceDistance from the specified stream.
 String toString()
          Returns a string representation of this SubspaceDistance.
 SubspaceDistance undefinedDistance()
          Provides an undefined distance.
 void writeExternal(ObjectOutput out)
          Writes the subspace distance value and the affine distance value of this SubspaceDistance to the specified stream.
 
Methods inherited from class de.lmu.ifi.dbs.elki.distance.distancevalue.AbstractDistance
equals, isInfiniteDistance, isNullDistance, isUndefinedDistance, requiredInputPattern, testInputPattern
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

FACTORY

public static final SubspaceDistance FACTORY
The static factory instance


serialVersionUID

private static final long serialVersionUID
Serial version number.

See Also:
Constant Field Values

SEPARATOR

public static final String SEPARATOR
Indicates a separator.

See Also:
Constant Field Values

SUBSPACE_PATTERN

public static final Pattern SUBSPACE_PATTERN
The pattern for parsing subspace values


subspaceDistance

private double subspaceDistance
The subspace distance.


affineDistance

private double affineDistance
The affine distance.

Constructor Detail

SubspaceDistance

public SubspaceDistance()
Empty constructor for serialization purposes.


SubspaceDistance

public SubspaceDistance(double subspaceDistance,
                        double affineDistance)
Constructs a new SubspaceDistance object consisting of the specified subspace distance and affine distance.

Parameters:
subspaceDistance - the distance between the two subspaces spanned by the strong eigenvectors of the two points
affineDistance - the affine distance between the two subspaces
Method Detail

plus

public SubspaceDistance plus(SubspaceDistance distance)
Description copied from interface: Distance
Returns a new distance as sum of this distance and the given distance.

Parameters:
distance - the distance to be added to this distance
Returns:
a new distance as sum of this distance and the given distance

minus

public SubspaceDistance minus(SubspaceDistance distance)
Description copied from interface: Distance
Returns a new Distance by subtracting the given distance from this distance.

Parameters:
distance - the distance to be subtracted from this distance
Returns:
a new Distance by subtracting the given distance from this distance

toString

public String toString()
Returns a string representation of this SubspaceDistance.

Specified by:
toString in interface Distance<SubspaceDistance>
Overrides:
toString in class Object
Returns:
the values of the subspace distance and the affine distance separated by blank

compareTo

public int compareTo(SubspaceDistance other)
Compares this SubspaceDistance with the given SubspaceDistance wrt the represented subspace distance values. If both values are considered to be equal, the values of the affine distances are compared.

Returns:
the value of Double.compare(this.subspaceDistance, other.subspaceDistance) if it is a non zero value, the value of Double.compare(this.affineDistance, other.affineDistance) otherwise

hashCode

public int hashCode()
Description copied from class: AbstractDistance
Any extending class should implement a proper hashCode method.

Specified by:
hashCode in class AbstractDistance<SubspaceDistance>

getSubspaceDistance

public double getSubspaceDistance()
Returns the value of the subspace distance.

Returns:
the value of the subspace distance

getAffineDistance

public double getAffineDistance()
Returns the value of the affine distance.

Returns:
the value of the affine distance

writeExternal

public void writeExternal(ObjectOutput out)
                   throws IOException
Writes the subspace distance value and the affine distance value of this SubspaceDistance to the specified stream.

Throws:
IOException

readExternal

public void readExternal(ObjectInput in)
                  throws IOException
Reads the subspace distance value and the affine distance value of this SubspaceDistance from the specified stream.

Throws:
IOException

externalizableSize

public int externalizableSize()
Returns the number of Bytes this distance uses if it is written to an external file.

Returns:
16 (2 * 8 Byte for two double values)

getPattern

public Pattern getPattern()
Description copied from class: AbstractDistance
Get the pattern accepted by this distance

Specified by:
getPattern in class AbstractDistance<SubspaceDistance>
Returns:
Pattern

parseString

public SubspaceDistance parseString(String val)
                             throws IllegalArgumentException
Description copied from interface: Distance
Provides a measurement suitable to this measurement function based on the given pattern.

Parameters:
val - a pattern defining a similarity suitable to this measurement function
Returns:
a measurement suitable to this measurement function based on the given pattern
Throws:
IllegalArgumentException - if the given pattern is not compatible with the requirements of this measurement function

infiniteDistance

public SubspaceDistance infiniteDistance()
Description copied from interface: Distance
Provides an infinite distance.

Returns:
an infinite distance

nullDistance

public SubspaceDistance nullDistance()
Description copied from interface: Distance
Provides a null distance.

Returns:
a null distance

undefinedDistance

public SubspaceDistance undefinedDistance()
Description copied from interface: Distance
Provides an undefined distance.

Returns:
an undefined distance

Release 0.4.0 (2011-09-20_1324)