我有一个大约100个数字的列表。我知道数据合理地适合某些正弦函数。我想创造某种曲线。理想情况下,我想提取幅度,相位和频率。有什么建议或想法吗?
例如: inputList = [x1,...,x100]
我试图找出一些能够做到这一点的功能
def fitCurve(inputList):
A = amplitude(inputList)
#calculate frequency
#calculate phase
def amplitude(data):
return (max(data) - min(data))/2
def frequency(data):
#my first intuition is to find the first peak, but I'm not sure how to find the second one
def phase(data):
#not sure what to do here at all...
答案 0 :(得分:1)
我不会给你代码,但这可能是我想要的。成功在很大程度上取决于您的数据有多好。
最后一步,要获得幅度,频率和相位的最终值,您可以使用一些优化框架。只是这通常需要一个非常好的初始解决方案。
但是,如果我们假设数据生成为x(t) = A*sin(2*pi*f*t + phi) + w(t)
,其中w(t)
是加法,零均值,噪声,则以下内容可以起作用: