from scipy.fftpack import dct, idct import matplotlib.pyplot as plt N = 100 t = np.linspace(0,20,N) x = np.exp(-t/3)*np.cos(2*t) y = dct(x, norm='ortho') window = np.zeros(N) window[:20] = 1 yr = idct(y*window, norm='ortho') sum(abs(x-yr)**2) / sum(abs(x)**2) # 0.0010901402257 plt.plot(t, x, '-bx') plt.plot(t, yr, 'ro') window = np.zeros(N) window[:15] = 1 yr = idct(y*window, norm='ortho') sum(abs(x-yr)**2) / sum(abs(x)**2) # 0.0718818065008 plt.plot(t, yr, 'g+') plt.legend(['x', '$x_{20}$', '$x_{15}$']) plt.grid() plt.show()