【问题标题】:Rotated Paraboloid Surface Fitting旋转抛物面拟合
【发布时间】:2015-01-28 07:56:44
【问题描述】:

我有一组实验确定的 (x, y, z) 点,它们对应于抛物线。不幸的是,数据没有沿着任何特定的轴对齐,因此对应于旋转的抛物线。

我有以下一般表面: Ax^2 + By^2 + Cz^2 + Dxy + Gyz + Hzx + Ix + Jy + Kz + L = 0

我需要生成一个可以使用(我假设)最小二乘拟合准确表示抛物线的模型。我似乎无法弄清楚这是如何工作的。我虽然旋转抛物线,直到它的中心轴与 z 轴对齐,但我不知道这个轴是什么。 Matlab 的 cftool 似乎只适合 z = f(x, y) 形式的方程,我不知道 python 中有什么可以解决这个问题。 我还尝试以数字方式求解参数。当我尝试将其转换为矩阵方程并通过最小二乘法求解时,矩阵结果是可逆的,因此我的参数都为零。我也坚持这一点,任何帮助将不胜感激。我并不介意这种方法,因为我熟悉 matlab、python 和线性代数(如果需要)。

谢谢

【问题讨论】:

标签: python matlab curve-fitting least-squares surface


【解决方案1】:

不要对这个问题使用任何工具箱、GUI 或特殊功能。您的问题很常见,您提供的方程式可能会以非常直接的方式解决。线性最小二乘问题的解可以概括为:

  1. 向量空间的基础是 x^2, y^2, z^2, xy, yz, zx, x, y, z, 1。因此您的向量有 10 维。
  2. 您的问题可以表示为 Ap=b,其中 p = [A B C D E F G H I J K L]^T 是包含您的参数的向量。右手边的 b 应该全为零,但由于模型错误、数据的不确定性或数字原因会包含一些残差。必须尽量减少这种残差。
  3. 矩阵 A 的维度为 N x 10,其中 N 表示抛物线表面上已知点的数量。

A = [x(1)^2 y(1)^2 ... y(1) z(1) 1

...

x(N)^2 y(N)^2 ... y(N) z(N) 1]

  1. 通过计算 p = A\b 求解超定线性方程组。

【讨论】:

  • 嗨 Diphthong,我确实构建了这个矩阵,它的矩阵大小为 120 X 10。我也有 b 作为 120 X 1 向量。当我尝试求解方程时,我只是得到矩阵是可逆的,因此系数向量全为零。我知道问题很可能是由于您的第 2 步造成的。我不知道您所说的“右手边 b...由于模型错误...将包含一些残差...”是什么意思。换句话说,我怎样才能得到一个非零的 b?
  • 原来你的系数是线性相关的。当然,简单的解决方案是一切都为零。你需要去掉一个参数。我建议你定义 L = -1。然后您可以将矩阵 A 的最后一列放在右侧。你的新矩阵 A* 应该有 N x 9 的维度,新的 b* 应该是全1。如果您成功使用此修改,我将相应地编辑我的帖子,所以如果您这样做,请告诉我。
  • 我按照你说的定义了常量参数(L = -1)。然后这给了我一个向量。正如你所说,我的新矩阵是 N x 9。当我求解方程时,我得到所有参数都为零,除了 x、y 和 z 分量,当然还有常数参数(定义 L = 1)。当我实际上需要抛物面时,这当然对应于平面。我想知道您对此有什么建议吗?
  • 尝试计算残差 r = A*p - b。如果它为零或非常小,则您的抛物线方程至少对所选点成立。在这种情况下,您需要分析这是如何发生的。如果残差不为零,则最小二乘问题没有得到正确解决。
【解决方案2】:

您是否有足够的数据点来适应所有 10 个参数 - 您至少需要 10 个?

我还怀疑 10 个参数对于描述一般抛物面来说太多了,这意味着一些参数是相关的。我的感觉是平移和旋转的抛物面需要 7 个参数(虽然我不太确定)

【讨论】:

  • 我有一百多分,所以我相信应该没问题。我也确信 10 参数方程对应于二次曲面的完整一般曲面。如果其中一些确实是不必要的,我认为有些会变成零 - 我有足够的分数来确保这一点。
  • 一个完整的一般二次曲面可以是抛物面以外的其他曲面。表面上的约束使其成为抛物面,减少了参数的数量(减少到 7 个?)。在您的方程中,一个参数可以通过除法立即消除,因此即使对于一般二次方程,它最多也有 9 个独立参数。此外,一般二次曲面可以位于复数(数字)空间中,使拟合更加复杂。为了帮助拟合,重写方程并消除一些参数以对应抛物面。
猜你喜欢
  • 2014-11-26
  • 1970-01-01
  • 2018-02-20
  • 1970-01-01
  • 2018-01-02
  • 2019-06-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多