如何确定合适的 FFT 长度(大小)?

信息处理 fft
2022-02-27 03:26:08

我试图了解决定 FFT 长度(大小)和相关因素。

如果我得到如下流式 adc 数据,

1624
20850
10314
-15042
-18908
3717
21175
8479
-16411
-17907
5796
21308
6493
-17713
-16662
7687
21241
4468
-18724
-15291
9750
20929
2392
-19649
-13833
11508
...

Q1。我的第一个问题来自这里,我想用 FFT 进行处理,但我不知道我们如何确定合适的 FFT 长度(大小)?

Q2。如果我只是决定使用 FFT8,那么我可以使用 FFT8 吗?或者如果我想使用 FFT8 那么我应该考虑我需要知道什么?据我所知(我正在慢慢研究 DSP)FFT8 的输入数为 8。那么 FFT8 的工作原理是

First term inputs
1624
20850
10314
-15042      =>       FFT out
-18908
3717
21175
8479

Second term inputs
-16411
-17907
5796
21308           =>       FFT out
6493
-17713
-16662
7687

Third term inputs
21241
4468
-18724
-15291          =>       FFT out
9750
20929
2392
-19649

n terms inputs
-13833
11508
...

这是正确的吗?

我读过一些文章https://electronics.stackexchange.com/questions/12407/what-is-the-relation-between-fft-length-and-frequency-resolution https://spectraplus.com/DT_help/fft_size .htm但我没有完全理解。

那么你能帮我了解一下 FFT 大小是如何决定和计算过程的吗?

Q3,来自http://support.ircam.fr/docs/AudioSculpt/3.0/co/FFT%20Size.html,21,53 Hz 是什么意思。意思是?如下他们的描述。

提醒:分箱 FFT 大小定义了用于将窗口划分为相等的条或分箱的分箱数。因此,bin 是一个频谱样本,它定义了窗口的频率分辨率。

默认情况下 :

N (Bins) = FFT 大小/2

FR = Fmax/N(分档)

对于 44100 的采样率,我们有一个 22050 Hz 的频带。使用 1024 FFT 大小,我们将此频段划分为 512 个 bin。

FR = 22050/1024 ≃ 21,53 赫兹。

但我想了解更多关于 21,53 Hz 的信息。完全是FR。

2个回答

但我想了解更多关于 21,53 Hz 的信息。完全是FR。

这表示特定 bin 的带宽(以 Hz 为单位的 bin 的宽度)。这个值越小,你的 FR 就越好。为了得到bin center frequency,您可以使用以下公式

bin_center_freq = FR * bin_number;

因此,对于索引 20 处的 bin,我们得到

bin_center_freq =   21,53*20 = 430,66 Hz (Note that the bin at index 0 represents DC (0 Hz)

当我们有 时bin center frequency,我们可以很容易地计算出lower and upper frequencies那个 bin 的。

bin_lower_freq = bin_center_freq-(FR/2) = 419,89 Hz

and

bin_upper_frequency = bin_center_freq-(FR/2) = 441,42 Hz

请注意,实际频率分辨率(我们分离附近频率的能力)仍将取决于用于 FFT(Blackman, Gaussian, Hamming, rectangular等)的窗口类型以及存在的频谱内容(我们是否有两个都接近的组件)信号中的频率和幅度等),因此您不应假设特定的 bin 仅包含属于该 bin 的频率(由于spectral leakage,每个 bin 也将具有来自相邻 bin 的能量贡献)。

那么,正确的 FFT 大小是多少?

这真的取决于你想用你的信号做什么。如果您的信号包含频率和幅度接近的 2 个正弦波(例如,一个 220 Hz,另一个 225Hz),您应该选择一个相对较长的 FFT 长度,使 FR 小于 5 (f1-f2)。但由于加窗也会影响结果,因此请让您的 FFT 长度更长以补偿加窗效应。您可以在此处阅读有关窗口功能的更多信息(https://en.wikipedia.org/wiki/Window_function

这是我的想法。FFT 输出一个大小为N. 光谱箱间距为Δω=2π/(NΔt)在哪里Δt是样本在时间上的间距,并且N是 FFT 中的点数。

对于给定的j,通常输出格式(例如 FFTW)中的相关 FFT 频率由下式给出ωj=jΔω为了j<N/2ωj=(jN)Δω为了jN/2.

从上面可以看出,最大频率由下式给出j=N/21, 大约是ωmax=π/Δt. 因此,最大可分辨频率仅由样本间距决定,与 FFT 大小无关。

要选择样本间距,您需要选择N这样您就可以解析信号的所有频谱内容。这就是信号的“先验知识”的含义。例如,如果您希望信号在频率上有两个间隔很近的峰值ω1ω2, 那么你需要选择N这样Δω<|ω1ω2|(至少,但在实践中要小一些)单独解决这些峰值。如果使用较低的分辨率,您将看不到这两个峰。