首页 文章

如何在KDB中返回二进制函数的叉积

提问于
浏览
0

我想探索一种更好的方法来应用二元函数,它通过两个参数的每个元素进行迭代 . 以下面的函数为例,让问题更简单:

func:{x+y}
a:til 10
q)a
0 1 2 3 4 5 6 7 8 9
b:a
q)b:a
q)b
0 1 2 3 4 5 6 7 8 9

我得到的是交叉 生产环境 ,使得参数的每个元素将相互交叉并应用该函数 . 我的预期结果是

0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 10 2 3 4 5 6 7 8 9 10 11 3 4 5 6 7 8 9 10 11 12 4 5 6 7 8 9 10 11 12 13 5 6 7 8 9 10 11 12 13 14 6 7 8 9 10 11 12 13 14 15 7 8 9 10 11 12 13 14 15 16 8 9 10 11 12 13 14 15 16 17 9 10 11 12 13 14 15 16 17 18

我目前的解决方案是首先跨越参数列表:

(func/) each (a cross b)

我想知道有更好的方法吗?简单地使用 func'[a;b] 只会得到一个不是我想要的成对结果 .

2 回答

  • 1

    以下应该是您正在寻找的:

    a +/:\: b
    

    同样可以应用于其他定义的函数,例如:

    a {x mod y}/:\: b
    
  • 1

    你不需要每个右边或左边交叉 . 因为''是一个向量函数,你可以迭代一个列表并使用其他列表作为完整向量 .

    q) a+/:b
    

相关问题