由于该过程可以应用于任一域以增加另一个域的采样率,因此我尝试在频率空间中应用零填充以在时间空间中恢复“更清晰”的插值信号。为此,我在频谱中较高频率的位置插入零值频率,这是一种常见的做法。
但是,在零填充(红色)之后,我似乎不能很好地恢复原始信号(下面的黑色)。
import numpy as np
import matplotlib.pyplot as plt
# odd dimension for simplicity
n = 19
npad = 99
x = np.linspace(0.,4.*np.pi,n)
xpad = np.linspace(0.,4.*np.pi,npad)
f = np.cos(x) + 1j*np.sin(x)
f_fwd = np.fft.fft(f)
f_fwd_pad = np.zeros(npad,dtype=complex)
h = (n-1)//2
f_fwd_pad[0:h+1] = f_fwd[0:h+1]
f_fwd_pad[npad-h:] = f_fwd[h+1:]
f_interpolated = np.fft.ifft(f_fwd_pad)*npad/n
fig, ax = plt.subplots(1,2)
ax[0].plot(x,np.real(f),linestyle=None,marker='x',color='k')
ax[0].plot(xpad,np.real(f_interpolated),color='r')
ax[1].plot(x,np.imag(f),linestyle=None,marker='x',color='k')
ax[1].plot(xpad,np.imag(f_interpolated),color='r')
这个结果是预期的吗?是否有一些我缺少的基本理解?


