二维最小二乘拟合

时间:2013-02-06 12:21:20

标签: python curve-fitting least-squares

我有一个二维数据集,有一些固定维度(xLenyLen),其中包含一条正弦曲线。

我已经确定了正弦曲线的频率,并且我使用频率生成了我自己的正弦数据

SineData = math.sin((2*math.pi*freqX)/xLen + (2*math.pi*freqY)/yLen)

其中freqXfreqY以及曲线的X和Y方向的振荡频率。

但是现在我想做一个线性最小二乘拟合(或类似的东西),这样我就能适应正确的振幅。据我所知,线性最小二乘是正确的方法,但如果有另一种方式也很好。

leastsq函数是SciPy不进行多维拟合。是否有2 /多维最小二乘拟合算法的python实现

编辑:我从2D FFT中找到了正弦波的二维频率。数据包含2D正弦+噪声,因此我只选择了2D FFT的最大峰值,并采用了相反的方法。现在我有一条正弦曲线,但幅度已经关闭。有没有办法做二维最小二乘(或类似),并适合幅度?

2 个答案:

答案 0 :(得分:0)

如果您的数据通过使用trig函数得到很好的服务,您也可以考虑2D有限/离散傅里叶变换(FFT / DFT)。

NumPy内置了DFT解决方案。

有很多地方可以帮助您入门; Google找到this one

从原始数据开始。变换将告诉您频率解决方案是否正确以及是否还有其他频率也很重要。

答案 1 :(得分:0)

在最小二乘拟合中,最小化残余函数,可能是chisquare。由于这涉及对应于模型减去数据的每个点的平方差的求和,所以在制作残差时“遗忘”维数。因此,作为提供给例如leastsq的残差函数的结果,可以将2D差函数阵列中的所有值复制到1D阵列。在我对这个问题的回答中给出了复数到实数而不是2D到1D的示例:Least Squares Minimization Complex Numbers