跳至主要内容

距离函数

L1Norm

计算向量的绝对值之和。

语法

L1Norm(vector)

别名:normL1

参数

返回值

示例

查询

SELECT L1Norm((1, 2));

结果

┌─L1Norm((1, 2))─┐
│ 3 │
└────────────────┘

L2Norm

计算向量值平方和的平方根。

语法

L2Norm(vector)

别名:normL2

参数

返回值

示例

查询

SELECT L2Norm((1, 2));

结果

┌───L2Norm((1, 2))─┐
│ 2.23606797749979 │
└──────────────────┘

L2SquaredNorm

计算向量值平方和的平方根(L2Norm)的平方。

语法

L2SquaredNorm(vector)

别名:normL2Squared

*参数

返回值

  • L2 范数的平方。 Float

示例

查询

SELECT L2SquaredNorm((1, 2));

结果

┌─L2SquaredNorm((1, 2))─┐
│ 5 │
└───────────────────────┘

LinfNorm

计算向量的绝对值的最大值。

语法

LinfNorm(vector)

别名:normLinf

参数

返回值

  • Linf 范数或最大绝对值。 Float

示例

查询

SELECT LinfNorm((1, -2));

结果

┌─LinfNorm((1, -2))─┐
│ 2 │
└───────────────────┘

LpNorm

计算向量绝对值 p 次幂之和的 p 次方根。

语法

LpNorm(vector, p)

别名:normLp

参数

  • vector元组数组
  • p — 次幂。可能的值:实数,范围在 [1; inf) 内。 UIntFloat

返回值

示例

查询

SELECT LpNorm((1, -2), 2);

结果

┌─LpNorm((1, -2), 2)─┐
│ 2.23606797749979 │
└────────────────────┘

L1Distance

计算两个点在 L1 空间(1 范数(出租车几何 距离))中的距离(向量值作为坐标)。

语法

L1Distance(vector1, vector2)

别名:distanceL1

参数

返回值

  • 1 范数距离。 Float

示例

查询

SELECT L1Distance((1, 2), (2, 3));

结果

┌─L1Distance((1, 2), (2, 3))─┐
│ 2 │
└────────────────────────────┘

L2Distance

计算两个点在欧几里得空间(欧几里得距离)中的距离(向量值作为坐标)。

语法

L2Distance(vector1, vector2)

别名:distanceL2

参数

返回值

  • 2 范数距离。 Float

示例

查询

SELECT L2Distance((1, 2), (2, 3));

结果

┌─L2Distance((1, 2), (2, 3))─┐
│ 1.4142135623730951 │
└────────────────────────────┘

L2SquaredDistance

计算两个向量对应元素差值的平方和。

语法

L2SquaredDistance(vector1, vector2)

别名:distanceL2Squared

参数

返回值

  • 两个向量对应元素差值的平方和。 Float

示例

查询

SELECT L2SquaredDistance([1, 2, 3], [0, 0, 0])

结果

┌─L2SquaredDistance([1, 2, 3], [0, 0, 0])─┐
│ 14 │
└─────────────────────────────────────────┘

LinfDistance

计算两个点在 L_{inf} 空间(最大范数)中的距离(向量值作为坐标)。

语法

LinfDistance(vector1, vector2)

别名:distanceLinf

参数

返回值

  • 无穷范数距离。 Float

示例

查询

SELECT LinfDistance((1, 2), (2, 3));

结果

┌─LinfDistance((1, 2), (2, 3))─┐
│ 1 │
└──────────────────────────────┘

LpDistance

计算两个点在 Lp 空间(p 范数距离)中的距离(向量值作为坐标)。

语法

LpDistance(vector1, vector2, p)

别名:distanceLp

参数

  • vector1 — 第一个向量。 元组数组
  • vector2 — 第二个向量。 元组数组
  • p — 次幂。可能的值:实数,范围在 [1; inf) 内。 UIntFloat

返回值

  • p 范数距离。 Float

示例

查询

SELECT LpDistance((1, 2), (2, 3), 3);

结果

┌─LpDistance((1, 2), (2, 3), 3)─┐
│ 1.2599210498948732 │
└───────────────────────────────┘

L1Normalize

计算给定向量在 L1 空间(出租车几何)中的单位向量(元组值作为坐标)。

语法

L1Normalize(tuple)

别名:normalizeL1

参数

返回值

示例

查询

SELECT L1Normalize((1, 2));

结果

┌─L1Normalize((1, 2))─────────────────────┐
│ (0.3333333333333333,0.6666666666666666) │
└─────────────────────────────────────────┘

L2Normalize

计算给定向量在欧几里得空间(使用 欧几里得距离)中的单位向量(元组值作为坐标)。

语法

L2Normalize(tuple)

别名:normalizeL1

参数

返回值

示例

查询

SELECT L2Normalize((3, 4));

结果

┌─L2Normalize((3, 4))─┐
│ (0.6,0.8) │
└─────────────────────┘

LinfNormalize

计算给定向量在 L_{inf} 空间(使用 最大范数)中的单位向量(元组值作为坐标)。

语法

LinfNormalize(tuple)

别名:normalizeLinf

参数

返回值

示例

查询

SELECT LinfNormalize((3, 4));

结果

┌─LinfNormalize((3, 4))─┐
│ (0.75,1) │
└───────────────────────┘

LpNormalize

计算给定向量在 Lp 空间(使用 p 范数)中的单位向量(元组值作为坐标)。

语法

LpNormalize(tuple, p)

别名:normalizeLp

参数

  • tuple元组
  • p — 次幂。可能的值:任何从 [1;inf) 的数字。 UIntFloat

返回值

示例

查询

SELECT LpNormalize((3, 4),5);

结果

┌─LpNormalize((3, 4), 5)──────────────────┐
│ (0.7187302630182624,0.9583070173576831) │
└─────────────────────────────────────────┘

cosineDistance

计算两个向量之间的余弦距离(元组值作为坐标)。返回的值越小,向量越相似。

语法

cosineDistance(vector1, vector2)

参数

返回值

  • 两个向量之间角度的余弦值减 1。 Float

示例

查询

SELECT cosineDistance((1, 2), (2, 3));

结果

┌─cosineDistance((1, 2), (2, 3))─┐
│ 0.007722123286332261 │
└────────────────────────────────┘