如何解决两个多项式相乘 FFT
我研究了 FFT 算法并理解了它(有点),为了更清楚,我想要演示 FFT 算法和 IFFT 的代码(即使它们非常相似)。如果你们能帮助我,那就太好了。谢谢!如果可能,在 C++ 中。我现在已经理解了FFT算法。我只需要一些 IFFT 代码,因为我无法对其进行编码。 这是我的 FFT 代码:
#include <complex>
#include <algorithm>
#include <vector>
#include <limits.h>
using namespace std;
typedef complex<double> cd;
vector<cd> fft(vector<cd>& a)
{
int n = a.size();
if (n == 1)
return vector<cd>(1,a[0]);
vector<cd> w(n);
for (int i = 0; i < n; i++) {
double alpha = -2 * M_PI * i / n;
w[i] = cd(cos(alpha),sin(alpha));
}
vector<cd> A0(n / 2),A1(n / 2);
for (int i = 0; i < n / 2; i++) {
A0[i] = a[i * 2];
A1[i] = a[i * 2 + 1];
}
vector<cd> y0 = fft(A0);
vector<cd> y1 = fft(A1);
vector<cd> y(n);
for (int k = 0; k < n / 2; k++) {
y[k] = y0[k] + w[k] * y1[k];
y[k + n / 2] = y0[k] - w[k] * y1[k];
}
return y;
}
int main()
{
vector<cd> a{1,2,3,4};
vector<cd> b = fft(a);
for (int i = 0; i < 4; i++)
cout << b[i] << endl;
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。