什么时候应使用fftshift(fft(fftshift(x))),什么时候应使用fft(x)?

arc*_*pus 3 python fft

我想在Python中实现的算法,但我不知道我应该使用fftshift(fft(fftshift(x))),只有当fft(x)(来自numpy的)。是否有基于输入数据形状的经验法则?
我使用fftshift而不是ifftshift因为vector中的值是偶数x

Dan*_*ero 6

这实际上取决于您想要什么。的DFT(以及因此FFT)与周期等于2PI频域的周期性。

fft()函数将返回由DFT的欧米伽(弧度/秒)的近似0,以pi(即0fs,这里fs是采样频率)。所有的fftshift()工作就是fft()在中间向下交换右侧的输出向量。因此,fftshift(fft())现在的输出是从-pi/2pi/2

通常,人们喜欢使用FFT 绘制DTFT(甚至可能是CTFT)的近似值,因此他们使用大量的零对输入进行零填充(函数fft()自行执行此操作),然后使用fftshift()-pi和之间作图的功能pi

换句话说,fftshift(fft())用于绘图和fft()数学!


hot*_*aw2 6

fft(fftshift(x)) 旋转输入向量,因此复数 FFT 结果的相位相对于原始数据窗口的中心。如果输入波形在 FFT 宽度中不完全是整数周期,则相对于原始数据窗口中心的相位可能比相对于不连续开始和结束之间的某种平均的相位更有意义。fft(fftshift(x)) 还具有以下特性:对于任何反对称波形分量的窗口中心处的正零交叉,结果的虚部始终为正。

fftshift(fft(y)) 旋转 FFT 结果,使 DC bin 位于结果的中心,介于 -Fs/2 和 Fs/2 之间,这是一种常见的频谱显示格式。

  • 这仅适用于偶数大小的 `x`。使用 `ifftshift` 将原点从中心移到最左边的 bin,为 FFT 算法做准备:`fft(ifftshift(x))`。 (5认同)