离散傅里叶变换 C++ - 下一步做啥?
Posted
技术标签:
【中文标题】离散傅里叶变换 C++ - 下一步做啥?【英文标题】:Discrete Fourier Transform C++ - What to do next?离散傅里叶变换 C++ - 下一步做什么? 【发布时间】:2014-09-12 12:41:34 【问题描述】:我正在使用 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);
如果我在获得结果时做错了什么,请有人能够提供建议。
在此先感谢您的任何帮助!!! :)
【问题讨论】:
如果你能解释一下这样做的目的会有所帮助,即你想达到什么目的? 抱歉回复晚了,因工作出国了。我将其用作分析软件的一部分,以确定视频在加密/压缩和还原过程后失真的程度。将使用 FFT 绘制图表以进行音频分析 【参考方案1】:对于几乎所有目的,您接下来要做的就是计算每个复数值的大小。傅立叶域中的相位信息是时域中(小)时移的结果,通常这并不重要。如果你改变相位信息并将其转换回时域,听起来还是一样。
幅度可以直接画出来,很有意义。
【讨论】:
以上是关于离散傅里叶变换 C++ - 下一步做啥?的主要内容,如果未能解决你的问题,请参考以下文章