gpt4 book ai didi

arrays - 如何使用倒谱?

转载 作者:行者123 更新时间:2023-12-02 06:44:54 27 4
gpt4 key购买 nike

最近我问了这个问题:How to get the fundamental frequency from FFT? (您实际上不需要阅读它)

我现在的疑问是:如何使用倒谱算法?

我只是不知道如何使用它,因为我唯一知道的语言是 ActionScript 3,因此我对 C、Java 等中的 native 函数以及如何实现的引用资料很少他们在AS上。大多数文章都是关于这些语言的 =/(不过,欢迎使用 AS 以外的其他语言回答,请解释一下脚本是如何工作的)

我发现的有关倒谱以查找 FFT 结果基频的文章告诉我应该这样做:

信号→FT→abs()→平方→对数→FT→abs()→平方→功率倒谱

数学上:|F{log(|F{f(t)}|²)}|²

重要信息:

  • 我正在使用 flash 开发吉他调音器
  • 这是我第一次处理高级声音
  • 我正在使用 FFT 从到达用户麦克风的信号中提取频率档,但我陷入了从中获取基频的困境

我不知道:

  • 如何在 ARRAY 中应用正方形(我的意思是,FFT 提供的数据是一个数组。我应该将其与自身相乘吗?当我尝试 fftResults * fftResults 时,ActionScript 的调试会抛出错误)
  • 如何应用“日志”。即使我只有一个号码,我也不知道如何应用它。
  • 复倒谱和幂倒谱有什么区别。另外,我应该使用它们中的哪些?我正在尝试开发一个吉他调音器。

谢谢!

最佳答案

请注意,FFT 的输出是一个复数值数组,即每个 bin = re + j*im。我认为你可以结合abs和square运算并计算每个bin的re*re + im*im。这为每个 bin 提供了一个正值,显然您可以很容易地计算每个 bin 的对数值。然后,您需要对此对数平方数据执行第二次 FFT,并再次使用第二次 FFT 的输出,为每个 bin 计算 re*re + im*im。然后,您将得到一组正值,其中有一个或多个代表输入的一个或多个基频的峰值。

关于arrays - 如何使用倒谱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4925333/

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