我有一些二进制数组。例如,让我的数组是:
int a[] = {1, 0, 0, 0, 1, 0, 1, 0, 1}
我想根据这个公式计算值:
如何使用快速傅立叶变换计算此函数?我有一个大数组,我必须多次计算这个函数。所以,我希望能够快速计算出这个函数。
最佳答案
您所做的计算基本上是一个卷积,时域中的卷积只是频域中的乘法。因此只需获取 a
的 FFT 并将其与自身相乘,然后执行 IFFT回到时域。所以简而言之,你可以通过计算b
b(2*i) = IFFT( FFT(a[0:2*i)]).FFT(a[0:2*i]) )
关于c++ - 如何使用快速傅立叶变换计算数组元素的乘积之和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30335105/