fftw-convolution-example-1D
使用库中实现的快速傅立叶变换 (FFT) 执行实向量一维离散卷积的简单 C++ 示例。
这段代码是著名的卷积定理的简单直接应用。 它效率不高,但意味着易于理解。
算法说明
设 v1, v2 是两个实数向量。 这些向量的离散(线性)卷积可以通过以下过程计算:
将两个向量零填充到长度 size(v1)+size(v2)-1。
计算填充向量的离散傅立叶变换。
计算这些傅立叶变换的逐点乘积。 即 result[i] = Fourier(pad(v1))[i] * Fourier(pad(v2))[i]
通过逆傅里叶变换变换结果。
必须预先填充向量的原因是没有填充,此过程将计算 v1 和 v2 的循环卷积。 由于我们对线性卷积感兴趣,我们需要添加足够的填充,以便环绕不会混合线性卷积的不同部分。
有关更多信息,请参阅。
实施说明
2022-05-18 20:09:51
5KB
C++
1