FFTshift 导致振荡 - 为什么? (麻木的)
FFTshift causes oscillations - why? (numpy)
我原来的问题如下:
我在数组 a 中有一个脉冲包络(0 元素 = 时间 0,最后一个元素 = 时间 T)。
我想要脉冲的傅立叶频谱。所以我做的是np.fft.fftshift(np.fft.fft(a))
。都好。
但后来我也被告知要提前换班:np.fft.fftshift(np.fft.fft(np.fft.fftshift(a)))
。然后出现振荡。
现在我想知道为什么一个人会像上面那样做 2 个班次,为什么会出现振荡...
举个例子:
我有以下代码
x = np.arange(100)
a =np.sin(np.pi*x**2/1000)
一个:
a_fft = np.fft.fft(a)
a_fft:
a_fft_shift = np.fft.fftshift(a_fft)
a_fft_shift:
a_shift = np.fft.fftshift(a)
a_shift_fft = np.fft.fft(a_shift)
a_shift_fft:
a_shift_fft_shift = np.fft.fftshift(a_shift_fft)
a_shift_fft_shift:
你的线路
a_shift = np.fft.fftshift(a)
重新排序您的原始时域信号。这意味着就 FFT 而言,您正在改变相位。
另请注意,您的信号存在不连续性。通过上面的线,这种不连续性被转移到信号的中心,这导致 FFT 产生无限量的高频余弦分量。如果你把它移到另一个地方,能量就会相应地分配。
另一个问题是您只考虑频谱的实部,即。 e.,余弦分量。也总是看虚部!
另请查看幅度谱,发现不连续点的位置仅影响相位。总能量始终保持不变。
我原来的问题如下:
我在数组 a 中有一个脉冲包络(0 元素 = 时间 0,最后一个元素 = 时间 T)。
我想要脉冲的傅立叶频谱。所以我做的是np.fft.fftshift(np.fft.fft(a))
。都好。
但后来我也被告知要提前换班:np.fft.fftshift(np.fft.fft(np.fft.fftshift(a)))
。然后出现振荡。
现在我想知道为什么一个人会像上面那样做 2 个班次,为什么会出现振荡...
举个例子: 我有以下代码
x = np.arange(100)
a =np.sin(np.pi*x**2/1000)
一个:
a_fft = np.fft.fft(a)
a_fft:
a_fft_shift = np.fft.fftshift(a_fft)
a_fft_shift:
a_shift = np.fft.fftshift(a)
a_shift_fft = np.fft.fft(a_shift)
a_shift_fft:
a_shift_fft_shift = np.fft.fftshift(a_shift_fft)
a_shift_fft_shift:
你的线路
a_shift = np.fft.fftshift(a)
重新排序您的原始时域信号。这意味着就 FFT 而言,您正在改变相位。 另请注意,您的信号存在不连续性。通过上面的线,这种不连续性被转移到信号的中心,这导致 FFT 产生无限量的高频余弦分量。如果你把它移到另一个地方,能量就会相应地分配。 另一个问题是您只考虑频谱的实部,即。 e.,余弦分量。也总是看虚部! 另请查看幅度谱,发现不连续点的位置仅影响相位。总能量始终保持不变。