为什么此R代码不会产生相同的结果? (卷积与FFT)

问题描述 投票:0回答:1

为什么这不会产生相同的结果?

x <- runif(10, 0, 1)
y <- runif(10, 0, 1)
convolve(x,y)

f <- fft(fft(x)*fft(y), inverse = TRUE)
f/length(f)  ##not the same as convolve(x,y)....

如果这不是功能convolve在做什么,那么还有什么?

r fft convolution
1个回答
1
投票

它们不相等,因为convolve具有默认参数conj = TRUE,并且fft返回复杂类型的向量。如果我们更改这些,结果的确是相同的:

all.equal(Re(f) / length(f), convolve(x, y, conj = FALSE))
# TRUE
© www.soinside.com 2019 - 2024. All rights reserved.