Apple加速vDSP fft与DFT和缩放因子

时间:2015-06-21 18:42:38

标签: 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。 p>

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

非常感谢对这两个问题的任何见解!希望我只是遗漏了一些关于在这个框架(或一般)中实现FFT的基本方法。

1 个答案:

答案 0 :(得分:0)

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