我想使用以下公式找到Python的功率谱:
我试图用这个来绘制应该遵循的数组:
P = []
for k in range(0,int(N/2)):
P.append((2/N)*(sum(x[k]*np.cos(2*np.pi*nu*t[k]))**2+(sum(x[k]*np.sin(2*np.pi*nu*t[k])))**2))
其中nu是频率:
nu = []
for j in range(0, int(N/2), 2):
nu.append(j/T)
x和t来自数据集,N只是所有x的总和。
Python不断告诉我:'不能将序列乘以'浮动'类型的非int 我在这做错了什么?我确信这与将错误类型的数据相互增加有关。但我不确定如何改变它。
我知道有一个内置FFT功能,但我认为让这个功能起作用对我来说真的很有帮助。
答案 0 :(得分:0)
nu是一个列表,因此代码段2*np.pi*nu*t[k]
给出了错误。尝试类似:
for i in nu:
P.append((2/N)*(sum(x*np.cos(2*np.pi*nu[i]*t))**2+(sum(x*np.sin(2*np.pi*nu[i]*t)))**2))
这样您就可以将每个i的数量(2/N)*(sum(x*np.cos(2*np.pi*nu[i]*t))**2+(sum(x*np.sin(2*np.pi*nu[i]*t)))**2)
相加。