Python FFT换档导致振荡-为什么?(努比)

Python FFT换档导致振荡-为什么?(努比),python,numpy,fft,ifft,Python,Numpy,Fft,Ifft,我最初的问题是: 我在数组a中有一个脉冲包络(0-元素=时间0,最后一个元素=时间T)。 我想知道脉冲的傅里叶谱。所以我做的是np.fft.fft移位(np.fft.fft(a))。一切都好 但是后来我也被要求事先做一个移位:np.fft.fft移位(np.fft.fft(a))。然后出现了振荡 现在我想知道为什么一个人会做如上所示的2个移位,为什么会出现振荡 下面是一个例子: 我有以下代码 x = np.arange(100) a =np.sin(np.pi*x**2/1000) a: a

我最初的问题是:

我在数组a中有一个脉冲包络(0-元素=时间0,最后一个元素=时间T)。 我想知道脉冲的傅里叶谱。所以我做的是np.fft.fft移位(np.fft.fft(a))。一切都好

但是后来我也被要求事先做一个移位:
np.fft.fft移位(np.fft.fft(a))
。然后出现了振荡

现在我想知道为什么一个人会做如上所示的2个移位,为什么会出现振荡

下面是一个例子: 我有以下代码

x = np.arange(100)
a =np.sin(np.pi*x**2/1000)
a:

a_fft:

a_fft_移位:

a_shift_fft:

a\u移位\u fft\u移位: 你的线路

a_shift = np.fft.fftshift(a)
重新排列原始时域信号。这意味着在FFT方面,你正在改变相位。 还请注意,您的信号中存在不连续性。通过上面的线,这种不连续性被转移到信号的中心,这导致FFT产生无限多的高频余弦分量。如果你把它转移到另一个地方,能量就会相应地分配。 另一个问题是,你只考虑光谱的真实部分,即。e、 ,余弦分量。永远也要看假想的部分! 再看一看震级谱,看看不连续的位置只影响相位。总能量始终保持不变


换档前:低频率为0和100。在移位之后,它们处于50,好像它们对应于高频。FFT和FFT^{-1}非常接近。因此,在计算移位信号的FFT时,会出现高频枕边<代码> NP.FFT.FFTSHIFTE()只用于在情节中间显示低频。仅用于显示!
 a_fft_shift = np.fft.fftshift(a_fft)
    a_shift = np.fft.fftshift(a)
    a_shift_fft = np.fft.fft(a_shift)
    a_shift_fft_shift = np.fft.fftshift(a_shift_fft)
a_shift = np.fft.fftshift(a)