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

Matlab 如何使用如下图所示的点集拟合曲线,matlab,curve-fitting,curve,Matlab,Curve Fitting,Curve,如图中所示,“X”可以映射两个“Y”值,“Y”可以映射两个“X”值 用这些点拟合曲线时,应确保一阶导数和 可以计算二阶导数 图: 编辑:Floris和pancake都给出了正确的答案,谢谢大家。与其将“y”作为“x”的函数进行拟合,不如分别拟合: “x”作为“t”的函数 “y”作为“t”的函数 其中“t”是样条曲线(或其他曲线拟合,如多项式)的固有坐标 我假设在图片中你知道点的顺序-它不仅仅是一堆未排序的点?因此,首先,您可以计算每个连续点之间的距离,并使用累积距离作为“t”参数。然后将样

如图中所示,“X”可以映射两个“Y”值,“Y”可以映射两个“X”值

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

可以计算二阶导数



编辑:Floris和pancake都给出了正确的答案,谢谢大家。

与其将“y”作为“x”的函数进行拟合,不如分别拟合:

  • “x”作为“t”的函数
  • “y”作为“t”的函数
其中“t”是样条曲线(或其他曲线拟合,如多项式)的固有坐标


我假设在图片中你知道点的顺序-它不仅仅是一堆未排序的点?因此,首先,您可以计算每个连续点之间的距离,并使用累积距离作为“t”参数。然后将样条拟合到‘X’和‘Y’坐标,作为T.

的函数,选择点的中间点可以是重心。从这个“原点”到第一个点画一条假想线。到点的距离

r=sqrt((x-x0)^2+(y-y0)^2)和角度<代码>θ=atan2((y-y0),(x-x0))。计算所有点的
r
theta
;如果θ缠绕,则添加2*pi使其连续。现在可以用样条拟合θ的函数r。最后,您可以插值多个θ值的样条曲线,并计算相应的
x=r*cos(θ)
y=r*sin(θ)


这应该可以做到。

您也可以在这里看到图:您需要“样条曲线拟合”-如果您有样条曲线工具箱,这很容易。如果你不知道的话,你需要阅读“C语言中的数字配方”并自己编写一些代码。我以前在matlab中使用过样条线工具箱。但是对于图中设置的点,它不起作用。matlab中的“样条拟合”有一个条件,即这些点的“X”值不能相同@花匠谢谢你的回答!