Distance Functions
L1Norm
Calculates the sum of absolute values of a vector.
Syntax
L1Norm(vector)
Alias: normL1
.
Arguments
Returned value
- L1-norm or taxicab geometry distance.
Examples
Query:
SELECT L1Norm((1, 2));
Result:
┌─L1Norm((1, 2))─┐
│ 3 │
└────────────────┘
L2Norm
Calculates the square root of the sum of the squares of the vector values.
Syntax
L2Norm(vector)
Alias: normL2
.
Arguments
Returned value
- L2-norm or Euclidean distance.
Type: Float.
Example
Query:
SELECT L2Norm((1, 2));
Result:
┌───L2Norm((1, 2))─┐
│ 2.23606797749979 │
└──────────────────┘
LinfNorm
Calculates the maximum of absolute values of a vector.
Syntax
LinfNorm(vector)
Alias: normLinf
.
Arguments
Returned value
- Linf-norm or the maximum absolute value.
Type: Float.
Example
Query:
SELECT LinfNorm((1, -2));
Result:
┌─LinfNorm((1, -2))─┐
│ 2 │
└───────────────────┘
LpNorm
Calculates the root of p
-th power of the sum of the absolute values of a vector in the power of p
.
Syntax
LpNorm(vector, p)
Alias: normLp
.
Arguments
Returned value
Type: Float.
Example
Query:
SELECT LpNorm((1, -2), 2);
Result:
┌─LpNorm((1, -2), 2)─┐
│ 2.23606797749979 │
└────────────────────┘
L1Distance
Calculates the distance between two points (the values of the vectors are the coordinates) in L1
space (1-norm (taxicab geometry distance)).
Syntax
L1Distance(vector1, vector2)
Alias: distanceL1
.
Arguments
Returned value
- 1-norm distance.
Type: Float.
Example
Query:
SELECT L1Distance((1, 2), (2, 3));
Result:
┌─L1Distance((1, 2), (2, 3))─┐
│ 2 │
└────────────────────────────┘
L2Distance
Calculates the distance between two points (the values of the vectors are the coordinates) in Euclidean space (Euclidean distance).
Syntax
L2Distance(vector1, vector2)
Alias: distanceL2
.
Arguments
Returned value
- 2-norm distance.
Type: Float.
Example
Query:
SELECT L2Distance((1, 2), (2, 3));
Result:
┌─L2Distance((1, 2), (2, 3))─┐
│ 1.4142135623730951 │
└────────────────────────────┘
L2SquaredDistance
Calculates the sum of the squares of the difference between the corresponding elements of two vectors.
Syntax
L2SquaredDistance(vector1, vector2)
Alias: distanceL2Squared
.
Arguments
Returned value
Type: Float.
Example
Query:
SELECT L2SquaredDistance([1, 2, 3], [0, 0, 0])
Result:
┌─L2SquaredDistance([1, 2, 3], [0, 0, 0])─┐
│ 14 │
└─────────────────────────────────────────┘
LinfDistance
Calculates the distance between two points (the values of the vectors are the coordinates) in L_{inf}
space (maximum norm).
Syntax
LinfDistance(vector1, vector2)
Alias: distanceLinf
.
Arguments
Returned value
- Infinity-norm distance.
Type: Float.
Example
Query:
SELECT LinfDistance((1, 2), (2, 3));
Result:
┌─LinfDistance((1, 2), (2, 3))─┐
│ 1 │
└──────────────────────────────┘
LpDistance
Calculates the distance between two points (the values of the vectors are the coordinates) in Lp
space (p-norm distance).
Syntax
LpDistance(vector1, vector2, p)
Alias: distanceLp
.
Arguments
vector1
— First vector. Tuple or Array.vector2
— Second vector. Tuple or Array.p
— The power. Possible values: real number from[1; inf)
. UInt or Float.
Returned value
- p-norm distance.
Type: Float.
Example
Query:
SELECT LpDistance((1, 2), (2, 3), 3);
Result:
┌─LpDistance((1, 2), (2, 3), 3)─┐
│ 1.2599210498948732 │
└───────────────────────────────┘
L1Normalize
Calculates the unit vector of a given vector (the values of the tuple are the coordinates) in L1
space (taxicab geometry).
Syntax
L1Normalize(tuple)
Alias: normalizeL1
.
Arguments
tuple
— Tuple.
Returned value
- Unit vector.
Example
Query:
SELECT L1Normalize((1, 2));
Result:
┌─L1Normalize((1, 2))─────────────────────┐
│ (0.3333333333333333,0.6666666666666666) │
└─────────────────────────────────────────┘
L2Normalize
Calculates the unit vector of a given vector (the values of the tuple are the coordinates) in Euclidean space (using Euclidean distance).
Syntax
L2Normalize(tuple)
Alias: normalizeL1
.
Arguments
tuple
— Tuple.
Returned value
- Unit vector.
Example
Query:
SELECT L2Normalize((3, 4));
Result:
┌─L2Normalize((3, 4))─┐
│ (0.6,0.8) │
└─────────────────────┘
LinfNormalize
Calculates the unit vector of a given vector (the values of the tuple are the coordinates) in L_{inf}
space (using maximum norm).
Syntax
LinfNormalize(tuple)
Alias: normalizeLinf
.
Arguments
tuple
— Tuple.
Returned value
- Unit vector.
Example
Query:
SELECT LinfNormalize((3, 4));
Result:
┌─LinfNormalize((3, 4))─┐
│ (0.75,1) │
└───────────────────────┘
LpNormalize
Calculates the unit vector of a given vector (the values of the tuple are the coordinates) in Lp
space (using p-norm).
Syntax
LpNormalize(tuple, p)
Alias: normalizeLp
.
Arguments
Returned value
- Unit vector.
Example
Query:
SELECT LpNormalize((3, 4),5);
Result:
┌─LpNormalize((3, 4), 5)──────────────────┐
│ (0.7187302630182624,0.9583070173576831) │
└─────────────────────────────────────────┘
cosineDistance
Calculates the cosine distance between two vectors (the values of the tuples are the coordinates). The less the returned value is, the more similar are the vectors.
Syntax
cosineDistance(vector1, vector2)
Arguments
Returned value
- Cosine of the angle between two vectors subtracted from one.
Type: Float.
Examples
Query:
SELECT cosineDistance((1, 2), (2, 3));
Result:
┌─cosineDistance((1, 2), (2, 3))─┐
│ 0.007722123286332261 │
└────────────────────────────────┘