如何使用如下图所示的点集拟合曲线

时间:2013-04-02 02:46:35

标签: matlab curve-fitting curve

如图中的点,“X”可以映射两个“Y”值,“Y”可以映射两个“X”值。

当拟合这些点的曲线时,应确保一阶导数和

可以计算二阶导数。


fig http://www.baidupcs.com/thumbnail/fbdd467ca3dce4e05e55b209bf6cc6dd?fid=3154234395-250528-2669431106&time=1364974850&sign=FDTA-DCb740ccc5511e5e8fedcff06b081203-2skix2HZJ0DXlkEgRMUWxxsBeQQ%3D&expires=8h&size=c850_u580&quality=100

编辑:Floris和pancake都给出了正确的答案,谢谢你们两位。

2 个答案:

答案 0 :(得分:1)

而不是适应' y'作为' x'的功能,您需要单独适合:

  • &#39; X&#39;作为&#39; <&#39;
  • 的功能
  • &#39; Y&#39;作为&#39; <&#39;
  • 的功能

其中&#39; t&#39;是样条曲线的固有坐标(或其他曲线拟合,例如多项式)。

我假设在图片中你知道点的顺序 - 它不仅仅是混乱的未分类点?首先,您可以计算每个连续点之间的距离,并使用累积距离作为您的&#39; t&#39;参数。然后将样条拟合到&#39; x&#39;并且&#39; y&#39;坐标作为t的函数。

答案 1 :(得分:1)

在点群中间选取一个点 - 可能是重心。从这个“原点”到第一点绘制一条虚线。距离点r=sqrt((x-x0)^2+(y-y0)^2);和角度theta=atan2((y-y0),(x-x0));的距离。为所有点计算rtheta;如果theta包裹,添加2 * pi使其连续。现在你可以使用theta的函数r来拟合。最后,您可以为theta的许多值插入样条曲线并计算相应的x=r*cos(theta);y=r*sin(theta);

应该这样做。