在Python中查找功率谱,而不使用内置的FFT函数



我想使用以下公式找到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一直告诉我:"不能将序列与类型为"float"的非int相乘"我在这里做错了什么?我确信这与错误类型的数据相互相乘有关。但我不知道该怎么改变。

我知道有一个内置的FFT函数,但我认为让这个函数发挥作用对我来说真的很有启发性。

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)求和。

最新更新