我想拟合正弦波而不拉伸它——也就是说,我希望它的频率和幅度保持相对相同。因此,我可以对正弦波进行的所有转换以使其适合我的数据是缩放它(一起增加频率和幅度)并平移它(向上或向下、向左或向右移动它)。
这可以用 scipy 的cure_fit 或sklearn 的任何其他适合来完成吗?
我有一些启动代码可以将正弦波拟合到数据中,但它会分别拉伸其频率和幅度(不会静态缩放)。我可以在此处包含它,但它与此答案中的代码基本相同:
让我举一个概念性的例子来说明我的意思,这样就很清楚了。假设我有一些数据跨越y=100
到y=1000
。正弦波从y=-1
到y=1
。合身应该是什么样子?出色地...
首先,我知道我必须扩大规模。多少取决于最小二乘拟合(也许y=100
,y=1000
作为数据的最小值和最大值,是异常值)。
其次,我知道我必须将它向上移动,这样它就不会以 为中心y=0
,而是以y=500
最小二乘拟合所建议的位置为中心。
此外,也许数据看起来像一个 S 曲线。在这种情况下,正弦波的缩放比例必须非常大,我必须将其平移到左侧以将波的底部与数据的底部对齐。说得通?
所以,我希望这个概念性的例子是有意义的。看起来这应该是非常基本的,但我无法手动解决。
如何拟合正弦波,同时严格保持正弦波没有任何失真?