用Lis中的数据拟合Python中的正弦波

2024-06-01 06:00:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有大约100个数字的列表。我知道数据符合某种正弦函数。我想画一些曲线。理想情况下,我想提取振幅、相位和频率。有什么建议或想法吗?在

例如: 输入列表=[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...

Tags: theto函数列表datadefnotfind
1条回答
网友
1楼 · 发布于 2024-06-01 06:00:21

我不会给你代码,但这可能是我会尝试的。成功在很大程度上取决于你的数据有多好。 最后一步,要获得振幅、频率和相位的最终值,可以使用一些优化框架。只是这通常需要一个很好的初始解。 但是,如果我们假设数据是以x(t) = A*sin(2*pi*f*t + phi) + w(t)的形式生成的,其中w(t)是加性的、零均值的噪声,则可以使用以下方法:

  1. 利用DFT求信号振幅谱的峰值来估计频率。在
  2. 通过查看最大/最小信号值来估计振幅。一些预滤波(简单的低通?)可能需要一个好的估计。在
  3. 使用优化来找到相位并微调振幅和频率。在

相关问题 更多 >