ios - Apple Accelerate vDSP fft vs DFT 和缩放因子

标签 ios macos signal-processing accelerate-framework

我是一位经验丰富的程序员,但我没有很多实现 DSP 例程的经验。

如果不是几个月的话,我已经为此苦苦思索了好几个星期。关于 Apple 的 Accelerate 框架,我的问题有两个方面:

1)

在 vDSP.h 头文件中有如下注释:请使用 vDSP_DFT_XXX 而不是(我猜)旧版本的 vDSP_fft_XXX。但是,在 Apple 的 https://developer.apple.com/library/prerelease/mac/samplecode/vDSPExamples/Listings/DemonstrateDFT_c.html#//apple_ref/doc/uid/DTS10004300-DemonstrateDFT_c-DontLinkElementID_6 之外,这样的例子为零。 .也许只是 DFT 函数更新了?如果是这样,很好,花花公子。

2)

比例因子。我可以阅读文档( https://developer.apple.com/library/mac/documentation/Performance/Conceptual/vDSP_Programming_Guide/UsingFourierTransforms/UsingFourierTransforms.html#//apple_ref/doc/uid/TP40005147-CH202-16195 ),它说在真实输入上的 FFT 的情况下,比如我正在使用的音频,每个傅立叶系数的结果值是实际数学值的 2 倍。

然而,在每个示例中,包括 Apple 自己的示例,用于生成的 vsmul() 函数的比例因子看起来是 1/2*N 而不是我预期的 1/2。

此外,没有关于 vDSP_DFT_XXX 例程的缩放因子的文档,但我认为它们只是包装了旧的?

任何对这些问题的任何见解都将不胜感激!希望我只是遗漏了有关 FFT 在此框架(或一般情况下)中实现方式的一些基本信息。

最佳答案

至少有 3 种不同的 FFT 缩放选项可以产生“数学”结果,并且没有单一的标准缩放。能量保持(参见 Parseval 定理)FFT 库需要按 1/N 的数量级进行缩放以获得输入幅度结果,因为相同幅度的较长信号将具有成比例的更多能量。 vDSP 使用能量保持前向 FFT。

关于ios - Apple Accelerate vDSP fft vs DFT 和缩放因子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30968045/

相关文章:

php - 当我通过具有空值的 PHP web 服务发布 JSON 数据时,Iphone 应用程序崩溃

objective-c - 检测 Mac OS X 窗口何时调整大小或移动

python - 如何使用 numpy 在频率范围内产生噪声?

numpy - 改进信号峰值分析的技巧。 (峰宽)

sql-server - 为什么 macOS 上的 .NET Core 项目无法连接到 SQL Server Express Docker 容器?

algorithm - 音高等级检测音频库

ios - 查询不工作 Firebase Swift

ios - 将输入 View 添加到文本字段 iOS 8 时出错

ios - 添加计时器以更新 UIView 背景颜色

Mac OS 上的 Java 随机变慢