【问题标题】:Curve fitting "best fit in 3d " with matlab or R使用matlab或R进行曲线拟合“3d最佳拟合”
【发布时间】:2016-08-23 06:57:40
【问题描述】:

我在空间中的 3D 点集(或点云)中拟合曲线时遇到问题。当我查看曲线拟合工具时,它们大多在给定点集 [x,y,z] 时创建一个曲面。但这不是我想要的。我想拟合点集曲线而不是曲面。

所以请帮助我在空间(3D)中拟合曲线的最佳解决方案是什么。

特别是,我的数据看起来像 3d 中的多项式曲线。

等式是

z ~ ax^2 + bxy + cy^2 + d

并且没有任何预先估计的系数 [a,b,c,d]。

谢谢。

xyz <- read.table( text="x y z
518315,750 4328698,260 101,139
518315,429 4328699,830 101,120
518315,570 4328700,659 101,139
518315,350 4328702,050 101,180
518315,3894328702,849 101,190
518315,239 4328704,020 101,430", header=TRUE, dec=",")

sample image is here

【问题讨论】:

  • 我认为您需要定义不是曲面的“#D 点集曲线”的含义。鉴于缺乏任何数据,实际上还没有什么可做的。
  • 这是一种多元回归线,但我无法为我的函数实现 R 和 matlab 线性模型。
  • 我不明白这个问题。您提供的方程式描述了一个表面。使用lm(z ~ I(x^2) + x:y + I(y^2), data = yourdata) 拟合参数很容易,但只要您不对xy 施加任何约束,它仍然是一个表面。
  • 也许您的意思是将数据拟合到一维流形(有时称为“空间曲线”?通过正确的转换,可以在 3 空间中排列。

标签: r matlab 3d curve-fitting curve


【解决方案1】:

有了一些数据,我们现在可以证明在您建议的方向上进行了相当骇人听闻的努力,尽管这确实是在估计表面,尽管您尽最大努力说服我们不这样做:

xyz <- read.table(text="x y z

 518315,750 4328698,260 101,139
 518315,429 4328699,830 101,120
 518315,570 4328700,659 101,139
 518315,350 4328702,050 101,180
 518315,389 4328702,849 101,190
 518315,239 4328704,020 101,430", header=TRUE, dec=",")
 lm( z ~ I(x^2)+I(x*y) + I(y^2), data=xyz)
#---------------

Call:
lm(formula = z ~ I(x^2) + I(x * y) + I(y^2), data = xyz)

Coefficients:
(Intercept)       I(x^2)     I(x * y)       I(y^2)  
 -1.182e+05   -3.187e-07    9.089e-08           NA  

x^2x*yy^2 的共线性阻止了对 y^2 变量系数的估计,因为 y = x*y/x。您还可以使用nls 来估计非线性表面的参数。

【讨论】:

    【解决方案2】:

    我想你想拟合这种类型的参数化曲线:

    r(t) = a + bt + ct^2

    因此,您将不得不进行三个独立的拟合:

    x = ax + bx*t + cx*t^2
    y = ay + by*t + cy*t^2
    z = az + bz*t + cz*t^2
    

    得到九个拟合参数ax,ay,az,bx,by,bz,cx,cy,cz。您的数据包含位置x,y,z,您还需要包含时间变量t=1,2,3,...,5,假设这些点以相等的时间间隔进行采样。

    如果您的数据点的“时间”参数是未知/随机的,那么我想您必须自己估计它作为另一个拟合参数,每个数据点一个。所以我的建议如下:

    1. 假设一些合理的参数abc
    2. 编写一个函数,计算每个数据点的时间 t_i 最小化该点与暂定点之间的平方距离 曲线 r(t)。
    3. 计算所有 (r(t)-R(t))^2 的总和 在曲线和您的数据集 R 之间。这将是您的拟合分数,或者 功绩图
    4. 使用 Matlab 的遗传算法 ga() 例程 获得一个最优的 a,b,c 将最小化图 上述定义的优点

    祝你好运!

    【讨论】:

    • 感谢您的回答。我听说过您提出的一些解决方案。但我没有任何时间变量。也许解决方案可以插值(或拟合)二维 x-y、x-z、y-z 并将它们组合。但是,存在另一个问题,即如何将 3 个不同的非线性模型组合成 3 维坐标系..
    • 我想知道如果假设x,y和z不断增加,是否可以先进行排序操作?那么 t 参数可以如你所描述的那样。
    猜你喜欢
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 2011-01-15
    • 2017-06-07
    • 1970-01-01
    相关资源
    最近更新 更多