1

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

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

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

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

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

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

编辑:我从二维 FFT 中找到了正弦波的二维频率。数据包含 2D 正弦 + 噪声,所以我只选择了 2D FFT 的最大峰值并取其倒数。现在我有一条正弦曲线,但幅度是关闭的。有没有办法做一个二维最小二乘(或类似的),并拟合幅度?

4

2 回答 2

0

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

NumPy 内置了DFT解决方案。

有很多地方可以帮助您入门;谷歌找到了这个

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

于 2013-02-06T12:25:17.967 回答
0

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

于 2013-11-21T20:15:47.747 回答