在不使用内置 FFT 函数的情况下查找 Python 中的功率谱
Finding a power spectrum in Python, without using the inbuilt FFT function
我想使用以下公式找到 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' 类型的非整数”
我在这里做错了什么?我确定这与将错误类型的数据相互相乘有关。但我不确定如何更改它。
我知道有一个内置的 FFT 函数,但我认为让这个函数起作用对我来说真的很有指导意义。
nu 是一个列表,所以这段代码 2*np.pi*nu*t[k]
给你 error.Try 类似的东西:
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)
我想使用以下公式找到 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' 类型的非整数” 我在这里做错了什么?我确定这与将错误类型的数据相互相乘有关。但我不确定如何更改它。
我知道有一个内置的 FFT 函数,但我认为让这个函数起作用对我来说真的很有指导意义。
nu 是一个列表,所以这段代码 2*np.pi*nu*t[k]
给你 error.Try 类似的东西:
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)