这种矢量产品的名称是什么?

机器算法验证 术语 符号 线性代数
2022-03-23 10:22:20

在制定某种算法时,我必须描述向量之间的以下操作。

给定,函数定义为x,yRdf(,):Rd×RdRd2

f(x,y)=[x1y1,x1y2,,x1yd,x2y1,x2y2,,xdyd]

正如你所看到的,这个函数与集合论中的笛卡尔积非常相似,这让我认为这可能是一个具有特定名称的众所周知的运算。我对吗?

我知道可以通过将列向量和行向量(即)之间的矩阵乘法相乘来实现此操作,但是我的操作需要可泛化以具有两个以上的输入向量,例如xTyf(,,):Rd×Rd×RdRd3

2个回答

这两个维列向量的Kronecker 积是以下维列向量x,yRddd2

xy=[x1yx2yxdy]=[x1y1x1y2x1ydx2y1x2y2x2ydxdy1xdy2xdyd]

你的方向问题:

  • 在二维情况下,您正在寻找外部产品欧几里得内积是而外积是外积生成一个矩阵。xTyxyT

  • 在一般情况下,您要求的是张量积

  • 您所要求的也是向量的克罗内克积(见罗德里戈·德·阿泽维多的回答。)

一些编程评论:

  • 注意row major 或 column major,即如何处理多维数组。
  • 这是标准的线性代数,如果您正在做任何中等到繁重的工作或性能很重要,我建议您使用线性代数库。不要重新发明轮子。一些讨论是here
    • BLAS/ LAPACK是标准的、稳定的和快速的。但是调用 BLAS/LAPACK 函数很痛苦。