我想在Python中实现的算法,但我不知道我应该使用fftshift(fft(fftshift(x)))
,只有当fft(x)
(来自numpy的)。是否有基于输入数据形状的经验法则?
我使用fftshift
而不是ifftshift
因为vector中的值是偶数x
。
这实际上取决于您想要什么。的DFT(以及因此FFT)与周期等于2PI频域的周期性。
该fft()
函数将返回由DFT的欧米伽(弧度/秒)的近似0
,以pi
(即0
到fs
,这里fs
是采样频率)。所有的fftshift()
工作就是fft()
在中间向下交换右侧的输出向量。因此,fftshift(fft())
现在的输出是从-pi/2
到pi/2
。
通常,人们喜欢使用FFT 绘制DTFT(甚至可能是CTFT)的近似值,因此他们使用大量的零对输入进行零填充(函数fft()
自行执行此操作),然后使用fftshift()
在-pi
和之间作图的功能pi
。
换句话说,fftshift(fft())
用于绘图和fft()
数学!
fft(fftshift(x)) 旋转输入向量,因此复数 FFT 结果的相位相对于原始数据窗口的中心。如果输入波形在 FFT 宽度中不完全是整数周期,则相对于原始数据窗口中心的相位可能比相对于不连续开始和结束之间的某种平均的相位更有意义。fft(fftshift(x)) 还具有以下特性:对于任何反对称波形分量的窗口中心处的正零交叉,结果的虚部始终为正。
fftshift(fft(y)) 旋转 FFT 结果,使 DC bin 位于结果的中心,介于 -Fs/2 和 Fs/2 之间,这是一种常见的频谱显示格式。