math - 如何将波浪数据转换为复数

标签 math audio signal-processing fft

我正在从麦克风读取原始数据并将其输入 FFT。我正在尝试的两个 FFT 库( AForgeExocortex.DSP )将复数作为输入并给出复数作为输出。

我试图理解什么是复数。

更具体地说 - 如何将从麦克风获得的原始音频数据转换为复数以便在 FFT 中进行处理?
如何将输出绘制成漂亮的频谱图(即从输出中读取频率和幅度)?

额外的好处:除了提到的两个之外,.Net 还有哪些 FFT 库?

最佳答案

当对真实数据执行 FFT 时,您只需将输入的虚部设置为零。 (请注意,FFT 的输出仍然很复杂。)

绘制频谱图更为复杂 - 之前有关于此的帖子,但本质上您需要计算连续重叠时间窗口的功率谱(典型重叠 = 50%),然后绘制使用颜色或灰度强度表示这些功率谱的 log (dB) 幅度(通常在 X 轴上显示时间,在 Y 轴上显示频率)。计算功率谱:

  • 申请window function输入数据(例如汉宁窗)
  • 快速傅里叶变换
  • 取 FFT 输出的前 N/2 个值的幅度平方 (re*re + im*im)
  • 将幅度转换为 dB 值 (10 * log10(幅度平方))

关于math - 如何将波浪数据转换为复数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6581001/

相关文章:

javascript - WebGL - 沿行进方向旋转对象

java - 将java中的数学函数转换为javascript函数

c - 如何在C中编译SoLoud库的演示示例?

audio - FFMPEG 是否有 "guard"反对剪辑?

c - 使用 C 在显示屏上通过停止/暂停/播放按钮绘制正弦波

java - Android-检测原始.wav文件和已过滤.wav文件之间的差异

javascript - 如何修复 JS 相关的 : The system cannot find the file specified - . reduce()

math - 费马小定理和 SICP 实现之间的对应关系是什么?

audio - 使用 FFMPEG 将音频(带偏移)添加到视频

C输出Wav文件没有产生任何声音