自上周以来,我才刚刚进入 FFT 的世界,因此我对如何设置频率阵列仍然没有一个清晰的整体概念。
在even
number的情况下N
,我通常会这样做(关于奈奎斯特截止频率)
odd
但是在number的情况下它是如何工作的N
。难道只是
我提前感谢大家。
自上周以来,我才刚刚进入 FFT 的世界,因此我对如何设置频率阵列仍然没有一个清晰的整体概念。
在even
number的情况下N
,我通常会这样做(关于奈奎斯特截止频率)
odd
但是在number的情况下它是如何工作的N
。难道只是
我提前感谢大家。
发布给任何可能觉得这很有用的人...
我创建了一张图片,显示了 N 的奇数和偶数情况下的 DFT 频率仓间距,其中 N 是样本数。FFT 通常对偶数个样本进行操作(该算法通过反复将问题分成两半来工作),因此仅适用偶数情况。DC 分量 (0*fs) 始终是计算的一部分。奈奎斯特频率 (fs/2) 的 bin 仅在偶数情况下显示。高于奈奎斯特频率的频率以相反的顺序反射回频率轴的负侧。对于真实信号,反射的 FFT 值是其正对应物的复共轭。在复平面上描述了两种特定情况,奇数情况 N=5,偶数情况 N=8。
简短的回答:是的,我想是的。
长答案:FFT 只是 DFT 的快速实现。N 点 DFT 操作的频率间隔为。DFT 的样本,其中 对应于负频率。如果 N 是奇数,则小于并且下一个 DFT 频率,高于。
我认为您的答案是正确的,另一种思考方式是您有一个 DC bin,具有 (N-1)/2 个负频率和 (N-1)/2 个正频率。
更新:用于奇数 N DFT 频率的 MATLAB/Octave 语法:
freqs = (fs/N)*( (N-1)/2 : (N-1)/2 )
奇数 N DFT 频率的 Python/Numpy/Scipy 语法:
freqs = (fs/N) * arange(-(N-1)/2,(N+1)/2)
偶数和奇数 N DFT 频率的 Python/Numpy/Scipy 语法(通过@endolith):
fftshift(fftfreq(N,1./fs))