可以从 FFT 重新创建声音吗?
Can a sound be re-created from FFT?
我正在研究一些 FFT 代码,并且正在寻找重新创建已通过快速傅里叶变换分解的(循环)声音的可能性。
我尝试添加几条正弦曲线,但它根本不起作用。
我正在使用 C++,但欢迎任何帮助。
谢谢
看来必须单独回答我的问题...我也明白IFFT是我要找的,我找到了一个较慢的功能但对我来说很完美:
void inverseDFT(const double *a, const double *b, const int &N, double *&s)
{
// note: this code is not optimised at all, written for clarity not speed.
for (int x = 0; x < N; ++x)
{
s[x] = a[0];
for (int k = 1; k <= N / 2; ++k)
{
s[x] += a[k] * cos(2 * M_PI / N * k * x) + b[k] * sin(2 * M_PI / N * k * x);
}
}
}
效果很好,也许会对其他人有所帮助。
我正在研究一些 FFT 代码,并且正在寻找重新创建已通过快速傅里叶变换分解的(循环)声音的可能性。 我尝试添加几条正弦曲线,但它根本不起作用。 我正在使用 C++,但欢迎任何帮助。
谢谢
看来必须单独回答我的问题...我也明白IFFT是我要找的,我找到了一个较慢的功能但对我来说很完美:
void inverseDFT(const double *a, const double *b, const int &N, double *&s)
{
// note: this code is not optimised at all, written for clarity not speed.
for (int x = 0; x < N; ++x)
{
s[x] = a[0];
for (int k = 1; k <= N / 2; ++k)
{
s[x] += a[k] * cos(2 * M_PI / N * k * x) + b[k] * sin(2 * M_PI / N * k * x);
}
}
}
效果很好,也许会对其他人有所帮助。