gpt4 book ai didi

r - 如何将向量与自身进行 n 次卷积

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:31:42 26 4
gpt4 key购买 nike

假设我有一个向量 x,我想对其进行 n 次卷积。在 R 中执行此操作的好方法是什么?

假设我们已经有一个函数 conv(u,v) 可以对两个向量进行卷积。

我能做到:

autoconv<-function(x,n){
r<-1;
for(i in 1:n){
r<-conv(r,x);
}
return(r);
}

有没有更高效的方法?

最佳答案

x 进行快速傅里叶变换 (fft),将其提高到 k 次方,然后对 fft 求逆。然后将其与对 xk 副本执行卷积进行比较。没有使用包。

# set up test data
set.seed(123)
k <- 3 # no of vectors to convolve
n <- 32 # length of x
x <- rnorm(n)

# method 1 using fft and inverse fft
yy <- Re(fft(fft(x)^k, inverse = TRUE) / n)

# method 2 using repeated convolutions
y <- x
if (k >= 2) for(i in 2:k) y <- convolve(x, y, FALSE)

# check that the two methods give the same result
all.equal(y, yy)
## TRUE

关于r - 如何将向量与自身进行 n 次卷积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33270637/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com