你的最高频率是 831 赫兹;因为忽略低于 82 Hz 的欠采样只会为您节省 10% 的采样率,所以让我们忽略这种可能性。
所以,奈奎斯特说你的采样率至少应该是 1.662 kHz;现在,正如@fibonatic 所提到的,您的问题是频率。任何 DFT 的分辨率总是
Δf=fNyquistNDFT⟹NDFT=fNyquistΔf
捕获该 DFT 所需的样本所花费的时间是
T=NDFTfsample=NDFT2fNyquist=fNyquistΔf2fNyquist=12Δf
因此,无论您以何种速率采样,对于全分辨率 DFT 所需的时间段,oyu 无能为力。
您可以用零填充较短的观察值,这将提高您的分辨率。关键是您用分辨率换取质量,而差异将显着增长。
DFT 在这里根本不是正确的选择。如果您需要较低频率的 2Hz 分辨率,则无需任何需要即可在较高频率下获得相同的分辨率。
老实说,考虑一下:您计划使用一个 DFT,它可以为您提供 4096 个频率箱,如果有很多,您可能需要区分 100 个音调。
我很确定你买的便宜的吉他调音器不是这样工作的。我假设他们只是使用专用硬件(而不是您需要编写的固件)来实现一个简单的滤波器组 - 甚至可能是一个 IIR 滤波器组,如果我有一个猜测,在非常低的样本位宽度和简单的双二阶。或者,更简单的是,他们只有几个模拟滤波器带通,只是对结果样本流进行欠采样,并对他们以这种方式预先选择的所有八度音阶执行相同的数字滤波器。
如果我必须这样做,我实际上会在你的微控制器上做同样的事情(顺便说一下,8192-FFT 对于 Cortex-M4 来说听起来很庞大,但你比我更了解你的设备),但架构不同。做一个粗略的计算:如果您保持较低的采样率,您需要多少个不同长度的 FIR 滤波器才能覆盖数据?将您的滤波器组实现为 PFB 滤波器组有帮助吗?是否做出分层决定(例如,首先是一个“八度选择器”,然后根据结果,扔掉一半,38,78,... 的样本,然后进行音调检测滤波器组。