我需要以相当间接的方式拟合数据。要在拟合中恢复的原始数据是一些线性函数,上面有小的振荡和漂移,我想识别它。我们称之为 f(t)。我们不能在实验中直接记录这个参数,只能间接记录,比如 g(f) = sin(af(t))。(真正的传递函数更复杂,但在这里应该不起作用)
因此,如果 f(t) 朝着 sin 函数的转折点改变方向,则很难识别,我尝试了一种替代方法来恢复 f(t),而不仅仅是 g 的反函数和一些数据继续猜测:
我创建了一个模型函数 fm(t),它经历相同且已知的传递函数 g() 并将 g(fm(t)) 拟合到数据中。由于数据集很大,我对连续的数据块进行分段处理,以保证 fm 在整个数据集中的连续性。
第一次尝试是使用使用 optimize.leastsq 的线性函数,其中误差估计来自 g(fm)。这并不完全令人满意,我认为最好将样条拟合到数据中以获得 fspline(t) 作为 f(t) 的模型,从而保证数据及其导数的连续性。
它的问题是,插值包中的样条拟合直接对数据起作用,所以我不能使用 g(fspline) 包装样条并对此进行样条插值。有没有办法在 scipy 中做到这一点?
还有其他想法吗?
我尝试了二次函数并修复了偏移和斜率,以匹配前面拟合的数据块,所以只有一个拟合参数,曲率,它很快开始偏离
谢谢