DFT计算对余弦信号分解中计算出现的结果值有大于1的项

问题遇到的现象和发生背景

想写个DFT分解信号,但运行后发现对余弦信号变换后振幅明显大于1

img

问题相关代码,请勿粘贴截图

import math
import matplotlib.pyplot as plt
import numpy as np
import cmath
#直接计算方法
def DFT_M(n,T):
omega=cmath.exp(complex(0,2math.piT/n))
omega_list=[omega**i for i in range((n-1)*2+1)]
M=np.mat([[omega_list[0+j
i] for i in range(n)] for j in range(n)])
return M
num=1000
x=0.1*np.array(range(num))
y=[math.cos(i) for i in x ]

y=np.mat(y)
y=y.T
z=y[:num]
H=np.array((DFT_M(num,1)z).T)
#print(H[0])
plt.plot(x[:num],[i.real/(num
*(0.5)) for i in H[0]])

运行结果及报错内容

img

我的解答思路和尝试过的方法

不知道是什么原因导致的

我想要达到的结果

解释出现大于值大于1 的原因