【问题标题】:Where to start with Fourier Analysis从哪里开始傅立叶分析
【发布时间】:2012-05-02 00:25:01
【问题描述】:

我正在从麦克风读取数据并想对其进行一些分析。我正在尝试生成类似这样的频谱分析仪:

我现在拥有的是这样的:

我的理解是我需要执行傅立叶分析 - 快速傅立叶变换? - 提取分量频率及其幅度。

有人可以确认我的理解是正确的以及我需要应用什么类型的傅立叶变换吗?

目前,我正在从麦克风(使用NAudio)获取包含 4k 样本的帧。我得到的缓冲区是 16 位/样本(有符号短)。作为参考,上图显示了大约半帧

我在 VB 中进行编码,因此任何 .Net 库/示例(最好在 NuGet 上)都将是最有用的。我相信实现会有很大差异,所以我需要处理的数据越少越好。

【问题讨论】:

  • @Paul R - 我不同意。第一个链接仅描述频谱图,其他链接仅提供 FFT 步骤的非常高级别的概述 - 具体来说,数据窗口和位如何重新排序?为什么选择 FFTW 而不是 Kiss FFT?等等......那里可能有重复,但我认为这些都不是
  • 请在 SO 上搜索 "fft" 和 "spectrogram" 并阅读之前的一些答案 - 您的所有问题已经被我和其他人多次回答过 - 您可能还想参加看DSP.stackexchange.com
  • @Paul 感谢您提供 DSP 链接 - 我在 A51 上没有看到该链接

标签: vb.net signal-processing fft


【解决方案1】:

顶部图是光谱仪的图,其中每条垂直时间线根据输入波形的时间切片(可能重叠)的 FFT(可能加窗)结果的大小进行着色。要绘制的垂直点数(频率分辨率)与 FFT 的长度有关。几乎任何 FFT 都可以。如果您使用最常见的复数到复数 FFT,只需将每个复数输入样本的虚部设置为零,将输入波形样本的时间片复制到“实部”部分 FFT,然后取幅值或记录每个复杂结果箱的大小,然后根据您的喜好将这些值映射到颜色。

【讨论】:

  • 感谢回复-我了解绘制光谱仪背后的原理,这是我以前没有做过的FFT的应用。哪个是“最常见的复复 FFT”?你说的是笼统的还是有标准的实现?我试过 Accord.Audio 但 FFT 实现不完整。在我的情况下,DirectX 实现使假设无效(例如,使用 DX 获取输入缓冲区)/ Mathnet 似乎缺少 Mathnet.numerics.Transofrmations 命名空间...
  • 如果您在某些库中找不到有效的 FFT,则有数百本 DSP 教科书和网站提供了 radix-2 FFT 示例(许多包括推导)。不到 1 页的代码可以翻译成几乎任何计算机语言。
  • 谢谢 - radix-2 可能是我想要的提示。我会做一些阅读
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-14
  • 1970-01-01
  • 2013-06-11
  • 2014-09-29
  • 1970-01-01
  • 2010-10-10
相关资源
最近更新 更多