我听说浮点 FFT 不准确,尤其是 cos 和 sin 函数 - 与 double 相比,数字完全不同。
我问是因为我重写了一些代码——Cooley-Tukey FFT 算法;结果是不同的。原始项目使用双精度,新项目使用浮点数。那是我的错误吗?我用 matlab 和 c++ 编写这段代码......很少问 matlab 的 double 和 java 和 c+ double 一样吗?
float PI=3.141592;
// Make sure n is a power of 2
// if (n != (1 << m))
// throw new RuntimeException("FFT length must be power of 2");
// precompute tables
for (int i = 0; i < n / 2; i++) {
cosa[i] = cos (-2 * PI * i / n);
sina[i] =sin (-2 * PI * i / n);
}