c++ - 如何使用快速傅立叶变换计算数组元素的乘积之和?

标签 c++ arrays c++11 sum fft

我有一些二进制数组。例如,让我的数组是:

int a[] = {1, 0, 0, 0, 1, 0, 1, 0, 1}

我想根据这个公式计算值:

enter image description here

如何使用快速傅立叶变换计算此函数?我有一个大数组,我必须多次计算这个函数。所以,我希望能够快速计算出这个函数。

最佳答案

您所做的计算基本上是一个卷积,时域中的卷积只是频域中的乘法。因此只需获取 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/

相关文章:

c++ - 我可以使用 std::align 将内存对齐到任意值 2 吗?

C++ 预处理器 : avoid code repetition of member variable list

c++ - constexpr 函数不需要返回常量表达式吗?

c++ - 实例化 basic_regex 类型的数组时出错

javascript - angularJs 从数组中排除已经选择的项目

javascript - 删除数组元素

c++ - 简单的 3D 数组 C++

c++ - 这个 shared_ptr 是如何自动转换为原始指针的?

c++ - 函数调用参数

c++ - 在非 constexpr 函数上添加的 constexpr 限定符不会触发任何警告