任何正弦信号的 FFT——取多少点 fft?

信息处理 fft 自由度
2022-02-15 13:12:18

假设我必须测量 60 Hz 正弦信号的 DFT 并计算多达 20 个谐波。20 次谐波的值为 20*60 = 1200 HZ。那么我的采样频率应该 >= 20*60*2 >= 2400 hz

  1. 现在我必须计算多少点 FFT 才能估计谐波信息?

  2. FFT(N) 中的点数是否等于采样频率?

  3. FFT(N)中与采样频率相关的点数是多少?

  4. 如果我们以更高的速率采样,FFT 的输出有什么优势吗?

以下三个估计是否正确?

1> 如果假设我的采样频率是 fs = 20*60*2 = 2400 那么,我所知道的是频率范围 [0,fs] 由 2400 点表示。即每个点代表2400hz/2400 = 1 HZ信息。那么FFT的输出就是,真的只需要看前N/2+1个样本

   X[0] is the constant term
   X[1] is 1 hz
   X[2] is 2 hz
   X[1201] is the 1200 HZ

2> 如果假设我的采样频率是 fs = 20*60*2 = 2400 那么,我所知道的是频率范围 [0,fs] 由 2400 点表示。我可以取 4800 个样本点吗?即每个点代表2400hz/4800 = 0.5 HZ的信息。那么FFT的输出就是,真的只需要看前N/2+1个样本

   X[0] is the constant term
   X[1] is 0.5 hz
   X[2] is 1 hz
   X[2400] is the 1199.5 HZ
   X[2401] is the 1200 HZ

采用更多样本来计算 FFT 有什么好处吗?我注意到的一件事是,频谱更密集,每个点都有 0.5 HZ 的信息,在这种情况下我的 FFT 计算会更准确吗?

3> 如果假设我的采样频率是 fs = 20*60*4 = 4800 = 那么,我所知道的是频率范围 [0,fs] 由 4800 点表示。即每个点代表4800hz/2400 = 1 HZ信息。那么FFT的输出就是,真的只需要看前N/2+1个样本

X[0] is the constant term
   X[1] is 1 hz
   X[2] is 2 hz
   X[2401] is the 2400 HZ

现在在这种情况下,FFT 正在生成高达 2400 赫兹的信息,但我需要高达 1200 赫兹。如果我们以更高的速率采样,FFT 的输出有什么优势吗?

请就此提出建议。

3个回答

您的许多问题都在其他地方得到了解答,因此我在下面添加了其他链接,但为了在与您的问题相关的一个地方进行总结,我在下面提供了解释,连同链接应该可以回答您的问题:

所需的采样频率:

如果信号是真实的,那么是的,采样频率必须大于向下延伸到 DC 的信号带宽的最高频率的两倍。但是,如果信号很复杂,则采样频率应大于相同情况下的最高频率。的奈奎斯特频率范围内具有唯一的频谱,其中是采样率,而对于实信号,负频率是正频率的复共轭(幅度相同,相位相反)。±fs/2fs

请注意,在对信号进行采样之前,需要对信号进行模拟抗混叠滤波器,否则如果存在于较高奈奎斯特区域(高于上述奈奎斯特频率范围的频率)中的能量将混叠到所观察的奈奎斯特频率范围内。(请参阅这篇解释混叠如何发生的帖子:Aliasing after downsampling)。实现砖墙滤波器是不可行的,因此通常会为采样率添加额外的余量,以适应​​抗混叠滤波器的特性。为此,您需要在采样之前了解感兴趣的信号信号的属性(因为一旦采样,就无法将混叠与第一奈奎斯特区的信号区分开来!)。例如,在您的情况下,您有兴趣观察 60 Hz 的 20 个谐波的信号:抗混叠滤波器应该通过 20 次谐波而不失真,然后拒绝更高的谐波,以便您可以最小化所需的采样率。然后,您将根据您的滤波器实现选择采样率,以便没有能量折叠以扭曲 20 次谐波。

需要多少点 FFT:

这已被多次回答,因此请参阅下面给出的链接以获取更多详细信息和警告,但要点是每个“点”的频率分辨率为 1/T Hz,其中 T 是以秒为单位的信号长度。此外,通常返回的 DFT 中的 bin(FFT 只是一种计算 DFT 的算法)从 DC 扩展到小于的一个 bin 。由于混叠,DC 等效于,其中 n 是任何整数,对于 DFT 中的所有其他频率也是如此,因此将 frmo DC 扩展到的 DFT等效地从 DC 扩展到小于的一个 bin ,然后从fsnfsfsfs/2fs/2fs(参见 Matlab 中的 fftshift)。如给出的链接中所述,由于采样率和信号总长度 T 的关系,当不使用窗口时1/fs

请注意,DFT 的每个 bin 都是 Sinc 滤波器的结果,因此如果您的采样率不是 60 Hz 的整数倍,您还会产生“扇形损失”的影响,这会扭曲每个谐波的测量。(请参阅此链接中的“滤波器组”解释:FFT 中旁瓣的直觉)。通过选择 60 Hz 整数倍的采样率,每个 60 Hz 谐波将在每个 bin 中正确居中。

针对您的特定应用的建议:

与为您的特定应用选择采样率和 bin 数量有关,如果 60 Hz 及其谐波是主要信号并且您没有其他重要的信号能量,那么有一个简单的解决方案可以非常优雅地工作以最小的测量失真准确估计每个谐波。如上所述,选择一个 60 Hz 整数倍的采样率,足够高以允许使用抗混叠滤波器,然后选择点数,使每个 bin 通过 60 Hz 的谐波并拒绝所有其他谐波。这意味着 FFT 中的样本数为,其中fs/60fs是 60 Hz > 2400 Hz 的整数倍(假设您的信号是真实的)。例如,正如您在选项中建议的那样,4800 Hz 可能是一个不错的选择(允许相当宽松的抗混叠滤波器!),在这种情况下点。所以在这种情况下N=4800/60=80fs=4800Hz并且有 80 个点,每个点是 60 Hz,因此 0、60、120、180 等以每个谐波为中心,并完美地消除其他谐波。为每个点测量的实际幅度是每个 bin 的 Sinc 函数频率响应下的总面积,因此如果在非谐波频率处存在其他能量,这将扭曲每个 bin 中测量的幅度。但如果谐波占主导地位,这将是一种出色而简单的方法。这有点类似于此链接中去除谐波信号的目标(从信号中分离特定频率的不同方法),因为 DFT 中的每个 bin 都是旋转移动平均滤波器,就像在这个引用的链接中所做的那样,当只有一个 bin 时出于兴趣。请注意该链接如何消除所有其他谐波!

请参阅这些其他回复,这将进一步帮助提供洞察力:

特定频率分辨率

FFT频率分辨率

过采样信号的特定频率分辨率所需的 FFT 点数

FFT 和样本数关系

N点DFT中N增加时会发生什么

让我先解释一下有关 FFT 的内容,然后您可以找到所需的参数值。您的信号频谱是周期性的(因为您有一个离散信号),因此我们只考虑一个周期内的分布。如果将这些周期归一化为 [0 2*pi] 范围,则 2*pi 被视为您的采样频率,而 pi 是关于该采样率的频谱中的最大可能频率。您的采样率必须至少是信号最大频率的两倍以避免混叠。

当您计算 N 点 FFT 时,您正在使用 N 个样本在一个周期内对信号频谱进行采样。所以 N 决定了你获得的频谱的频率分辨率。

假设 20 次谐波为 20*60 = 1200hz

1> 如果 fs = 20*60*2 = 2400hz
现在取 N=2400 或 4800 点不会改变您正在查看的频率范围,只要您具有相同的 fs...
如果 N = 4800,则输出FFT 的值也将是 N = 4800
,fft 的输出将表示高达 fs/2 的最大频谱信息 ..
FFT 的每个索引将表示 (fs/2)/(N/2) = 1200/2400 的频率增量= 0.5
& 可以从此 FFT 获得的频谱信息高达 fs/2 = 2400/2 = 1200

   X[0] is the constant term
   X[1] is 0.5 hz
   X[2] is 1 hz
   X[2400] is the 1199.5 HZ
   X[2401] is the 1200 HZ

2> 如果 fs = 20*60*4 = 4800hz
现在取 N=4800 或 9600 点不会改变您正在查看的频率范围,只要您有相同的 fs...

如果 N = 9600,则 FFT 的输出也将是 N = 9600
,fft 的输出将表示最大频谱信息,直至 fs/2 ..
FFT 的每个索引将表示 (fs/2)/(N) 的频率增量/2) = 2400/4800 = 0.5
& 可以从此 FFT 获得的频谱信息高达 fs/2 = 4800/2 = 2400 hz

   X[0] is the constant term
   X[1] is 0.5 hz
   X[2] is 1 hz
   X[4800] is the 2399.5 HZ
   X[4801] is the 2400 HZ

如果 N = 4800 ,那么 FFT 的输出也将是 N = 4800
并且 fft 的输出将表示最大频谱信息直到 fs/2 ..
并且 FFT 的每个索引将表示 (fs/2)/(N /2) = 4800/4800 = 1
& 可以从此 FFT 获得的频谱信息高达 fs/2 = 4800/2 = 2400 hz

   X[0] is the constant term
   X[1] is 1 hz
   X[2] is 2 hz
   X[2401] is the 2400 HZ