离散傅立叶变换C++-下一步要做什么
Discrete Fourier Transform C++ - What to do next?
我正在使用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);
如果我在得到结果时做错了什么,请有人能给我建议。
提前感谢任何帮助!!:)
对于几乎所有的目的,接下来要做的就是获取每个复数值的大小。傅立叶域中的相位信息是时域中(小)时移的结果,通常这无关紧要。如果你改变相位信息并将其转换回时域,它听起来仍然是一样的。
震级可以直接绘制出来,这很有意义。
相关文章:
- 维护unordered_map但同时每一步都需要最低的映射值
- 如何在最后一步使用CryptDecrypt解决NTE_BAD_DATA
- 我正在尝试制作一个程序,在添加 n 天(整数)后告诉一个人什么是一天(例如星期一等)
- 如何在 C++ 中返回到上一步
- 循环中的变量被设置为下一个数组的元素始终具有相同的内存地址?
- 如何一步一步地正确解释此代码?(编程新手)
- 无法使用两个包装不同下一层的ssl_stream编译代码
- 通过GL_FLOAT,GL_UNSIGNED_INT一步
- 使用 fstream 在空格分隔文件中查看下一项(不仅仅是一个字符)的方法
- GoogleMock:如何保存参数,以便在模拟上的下一次调用中使用
- switch 语句结束和下一条语句之间的时间是否具有确定性(与路径无关)
- 检查下一步是检查员
- 改进malloc()算法的下一步是什么
- 带有下一步/后退按钮的Qt对话框/小部件
- 只有当我在 c++ 中按 Enter 键(线程)时,代码如何进入下一步
- 离散傅立叶变换C++-下一步要做什么
- 成功构建wxWidgets后的下一步操作:Visual Studio 2010
- 得到了一个DBus::路径与libdbus-下一步
- 学习C++,下一步是什么?还有什么是推荐的编译器?
- 在C++中使用 Scripting.FileSystemObject 时,#import 后的下一步是什么?