gpt4 book ai didi

c++ - 离散傅立叶变换 C++ - 下一步做什么?

转载 作者:行者123 更新时间:2023-11-28 06:42:05 25 4
gpt4 key购买 nike

我正在使用 fftw 库对从视频录制中收到的音频信号执行 DFT。

这是我第一次使用这种数学和分析信号,但我相信我在计算后从数据中得到了正确的值。

但是,现在我不确定如何处理复数数组以及如何将其绘制成图表。

请有人建议下一步该怎么做,这里是一个前后数据的例子......

(in, out(real;im))
(-12190, (real:-3103; im:0))
(-16316, (real:-3108.465666587691; im:49.512823501357843))
(-10005, (real:-3096.7767811251124; im:99.645004992013128))
(first 3 from a sample of 512)

此外,这是我用来获得这些结果的代码...

    int n = 512;

double in[512];
fftw_complex out[512];
fftw_plan p;

ifstream rFile ("audioswap.csv");
string line;

if (rFile.is_open())
{
for (int i = 0; i < n; i++)
{
if ( getline (rFile, line))
{
in[i] = ::atof(line.c_str());
}
else
{
break;
}
}
}

p = fftw_plan_dft_r2c_1d(n, in, out, FFTW_ESTIMATE);

fftw_execute(p);

fftw_destroy_plan(p);

如果我在获取结果时做错了什么,请有人提供建议。

提前感谢任何帮助!!! :)

最佳答案

对于几乎所有目的,接下来要做的就是获取每个复数值的大小。傅里叶域中的相位信息是时域中(小)时移的结果,通常这无关紧要。如果更改相位信息并将其转换回时域,听起来还是一样。

大小可以直接画出来,很有意义。

关于c++ - 离散傅立叶变换 C++ - 下一步做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25808576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com