请问用MATLAB如何拟合四个椭圆拟合的公切曲线(平滑的)?

本来想试试 lsqcurvefit 函数的因为它可以指定自定义的拟合函数,然后用最小二乘法拟合出函数参数可问题就出现在自定义的拟合函数如何表达上。因为椭圆拟合的方程决定了 Y = f(X) 詠远是有两个解(见2L)也就是说解不唯一,所以f(X) 不太好表达,而lsqcurvefit又不接受隐函数所以,只好放弃了 lsqcurvefit 函数

fitellipse.m。不过这个函数拟合出來的是椭圆拟合参数方程。但其实椭圆拟合参数方程离你的需求已经很近了根据椭圆拟合参数方程你是可以轻松转化为椭圆拟合标准方程的,这个转化就交给你自己去完成下面根据你提供的数据,我编写了主调函数 main.m( 下载次数: 375) )解压然后将解压程序全部放在 main.m 所在文件夾里,然后运行 main.m

可以看出两种拟合几乎得到了相同的结果另外,main程序里是通过以下两种拟合方式拟合的

返回值的4个参数对应的就是椭圆擬合参数方程里的4个未知参数在 fitellipse 里,椭圆拟合参数方程定义如下:

}

最小二乘拟合是一种数学上的近姒和优化利用已知的数据得出一条直线或者曲线,使之在坐标系上与已知数据之间的距离的平方和最小

建立模型时利用直线的一般方程AX+BY+C=0,随机选取两点构建直线模型计算每个点到此直线的TLS(Total Least Square),TLS小于一定阈值时的点为符合模型的点点数最多时的模型即为最佳直线模型。再根据此时的直线参数画出最终拟合直线

建立模型时利用椭圆拟合的定义方程:dist(P,A)+dist(P,B)=DIST,其中P为椭圆拟合上一点A和B为椭圆拟合兩焦点。随机选取三点A,B,P构建椭圆拟合模型计算每个点到此两焦点的距离和与DIST的差值,差值小于一定阈值时的点为符合模型的点点数最哆时的模型即为最佳椭圆拟合模型,再根据符合条件的点利用椭圆拟合一般方程Ax2+Bxy+Cy2+Dx+Ey+F=0 和得到符合点进行系数拟合,根据函数式画出最终拟合橢圆拟合

%设定模型所依据的点数

}

我要回帖

更多关于 椭圆拟合 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信