假设我有两个函数,f1和f2,它们是从枚举的步骤/跳转点列表中分段定义的。
set.seed(1729)
n = 100
x1 = cumsum(runif(n))
x2 = cumsum(runif(n))
val1 = cumsum(runif(n))
val2 = cumsum(runif(n))
f1_list = data.frame(f = val1, x = x1)
f2_list = data.frame(f = val2, x = x2)
为简单起见,我们假设两者都是正确连续的。前几个值看起来像
> head(f1_list)
f x
1 0.1371357 0.5852396
2 0.4752026 1.0226336
3 1.0987574 1.5955279
4 1.9413884 1.9487419
5 2.0264764 2.8100133
6 2.3962088 3.2208168
> head(f2_list)
f x
1 0.3294329 0.5373382
2 0.8749826 1.3104701
3 1.5604155 2.0395473
4 1.9325968 2.9311143
5 2.3134223 3.2732812
6 2.4605212 3.6648067
我想计算convolution,g(t)=(f1 * f2)(t)。从编程上来说,这似乎不是一件容易的事,因为我们不仅需要通过卷积的定义来跟踪所有跳转点,而且也是反向。我试过的是
#############
#Say, t = 10#
#############
t = 10
f2_list$x_rev = t - f2_list$x
此时,我被卡住了,因为我不知道如何匹配f1_list和f2_list的x值的相应间隔。