gpt4 book ai didi

math - 将实部和虚部 FFT 输出转换为频率和幅度

转载 作者:行者123 更新时间:2023-12-02 07:07:29 29 4
gpt4 key购买 nike

我正在设计一个嵌入到 FPGA 芯片上的实时音频分析器。完成的系统将读取实时音频流并输出 X 个最普遍频率的频率和振幅对。

到目前为止,我已经设法实现了 FFT,但它的电流输出只是每个窗口的实部和虚部,我想知道的是,如何将其转换为频率和幅度对?

我一直在阅读有关 FFT 的一些资料,我看到了如何将它们转化为幅度和相位关系,但我需要一种格式,即使没有复杂数学知识的人也可以阅读!

谢谢


感谢您的快速回复!

我现在得到的 FFT 输出是实数对和虚数对的连续流。我不确定是将它们分解成与我的输入数据包(64 个值)大小相同的数据包,并将它们视为一个数组,还是单独处理它们。

采样率,我没问题。当我自己配置​​ FFT 时,我知道它正在运行 50MHz 的全局时钟。至于数组索引(如果输出当然是一个数组......),我不知道。

如果我们说输出是一系列 64 个复值的一维数组:

1) 如何找到数组索引 [i]?

2) 每个数组会返回一个频率部分,还是多个?

非常感谢您的帮助!没有它我会迷路。

最佳答案

好吧,坏消息是,没有办法绕过需要理解复数。好消息是,仅仅因为它们被称为复数并不意味着它们,你知道的,复杂。所以首先,查看维基百科页面,对于音频应用程序,我d 说,阅读第 3.2 节,也许跳过关于平方根的部分:http://en.wikipedia.org/wiki/Complex_number

这告诉你的是,如果你有一个复数,a + bi,你可以将它想象成位于 x,y 平面的 (a,b) 位置。要获得幅度和相位,您只需找到两个量:

  • 距飞机原点的距离,即星等,和
  • 与 x 轴的角度,即相位

幅度很简单:sqrt(a^2 + b^2)。

阶段同样简单:atan2(b,a)。

关于math - 将实部和虚部 FFT 输出转换为频率和幅度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9453714/

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