如何在KDB中优雅实现卷积操作?技术问题咨询
KDB中实现核
(-1 1)的卷积运算 你要的其实就是序列的差分运算,KDB里直接用内置的diff函数就能一步得到结果:
diff til 10
输出结果:
1 1 1 1 1 1 1 1 1
如果要手动实现卷积逻辑,也有两种优雅的方式:
- 滑动窗口配合
each:提取序列中连续2个元素的滑动窗口,每个窗口和核(-1;1)做点积求和{sum x*(-1;1)} each 2 til 10 - 向量直接运算:利用KDB的向量广播特性,用序列去掉第一个元素的结果,减去原序列去掉最后一个元素的结果
1_ til 10 - til 10
你之前用scan失败是因为scan是做累积迭代计算的,它会把上一次的计算结果作为下一次的参数,完全不适合这种逐对滑动的运算场景。
内容的提问来源于stack exchange,提问作者cjm2671
相关产品推荐
相关产品推荐

