python中具有不均匀间隔数据的频率分析

Kat*_*att 4 python signal-processing fft

我有一个由模拟程序生成的信号.因为该程序中的求解器具有可变的时间步长,所以我的信号具有不均匀的间隔数据.我有两个列表,一个包含信号值的列表,另一个列表包含每个值发生的时间.数据可能是这样的

npts = 500
t=logspace(0,1,npts)
f1 = 0.5 
f2 = 0.6
sig=(1+sin(2*pi*f1*t))+(1+sin(2*pi*f2*t))
Run Code Online (Sandbox Code Playgroud)

我希望能够使用python对此信号进行频率分析.似乎我不能在numpy中使用fft函数,因为这需要均匀间隔的数据.是否有任何标准功能可以帮助我找到此信号中包含的频率?

Pea*_*oto 6

解决此类问题的最常见算法称为频率的最小二乘频谱分析.看起来这将是scipy.signals包的未来版本.也许有一个当前版本,但我似乎无法找到它...此外,有一些代码可以从Astropython,我不会完整复制,但它实际上创建了一个你可以使用的lomb类以下代码可以获取一些值.您需要做的是以下内容:

import numpy
import lomb
x = numpy.arange(10)
y = numpy.sin(x)
fx,fy, nout, jmax, prob = lomb.fasper(x,y, 6., 6.)
Run Code Online (Sandbox Code Playgroud)