如何在KDB中完成两个向量的外积计算
KDB 向量外积实现方案
核心实现语法
KDB 中可以直接通过*运算符 + 双层迭代符 /:\:*的组合实现外积,语法和APL、J的简洁实现逻辑一致:
- 定义测试向量:
x:1 2 3 - 执行外积计算:
x */:\: x
输出结果为符合要求的3行3列矩阵:
1 2 3 2 4 6 3 6 9
原理解释
/:\: 是 KDB 中的「左每个-右每个」组合迭代符,作用是将左向量的每一个元素,分别与右向量的所有元素执行前置的指定运算(此处为乘法*),输出结果的维度天然等于「左向量长度 × 右向量长度」,完全匹配外积的计算要求。
cross方法补充
x cross x仅会生成两个向量元素的笛卡尔积配对,不会自动执行乘积运算,也可以通过后续处理得到外积,但实现冗余度更高:3 3# */: x cross x
该写法和/:\:的实现效果完全一致,更推荐使用前者的简洁写法。
内容的提问来源于stack exchange,提问作者cjm2671
相关产品推荐
相关产品推荐

