旋转抛物面曲面拟合

时间:2015-01-28 07:56:44

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

我有一组实验确定的(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和线性代数,如果需要的话。

由于

2 个答案:

答案 0 :(得分:2)

请勿对此问题使用任何工具箱,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×10,其中N表示抛物线表面已知点的数量。
  4. 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
    2. 来求解超定线性方程组

答案 1 :(得分:0)

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

我还怀疑有10个参数用于描述一般抛物面,这意味着一些参数是依赖的。我的意思是翻译和旋转的抛物面需要7个参数(虽然我不太确定)