最小二乘法拟合椭圆怎么求,最好matlab代码
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/18 21:53:08
最小二乘法拟合椭圆怎么求,最好matlab代码
最小二乘法拟合椭圆怎么求,最好matlab代码
最小二乘法拟合椭圆怎么求,最好matlab代码
F=@(p,x)p(1)*x(:,1).^2+p(2)*x(:,1).*x(:,2)+p(3)*x(:,2).^2+p(4);
% 离散数据点
x=[6.3246 0
6.9379 1.1372
7.0875 1.4598
7.9242 3.3259
7.8075 4.454
7.4144 6.6544
7.0113 7.1475
6.9972 7.1608
5.4084 7.8789
3.6725 7.817
2.0887 7.3585
0.77134 6.2585
-0.30409 6.1371
-1.1955 5.534
-1.9562 4.9541
-2.6275 4.1894
-3.2407 3.8261
-3.82 3.2479
-4.3847 2.6352
-4.9512 1.9635
-5.5328 1.2011
-6.137 0.30584
-6.7579 -0.77674
-7.3536 -2.106
-7.8009 -3.7068
-7.8436 -5.4597
-7.1336 -6.2233
-6.9397 -7.2127
-5.8234 -7.7935
-4.5284 -7.9183
-3.2401 -7.7237
-2.0724 -7.3522
-1.0584 -6.5047
-0.18885 -6.4363
0.56017 -5.9721
1.2139 -5.5207
1.7943 -5.0827
2.3196 -4.6548
2.8045 -4.2316
3.2607 -3.307
3.6981 -3.3735
4.1253 -2.9232
4.5494 -2.4463
4.977 -1.9315
5.4134 -1.3645
5.8625 -0.72786
6.3246 0];
p0=[1 1 1 1];
warning off
% 拟合系数,最小二乘方法
p=nlinfit(x,zeros(size(x,1),1),F,p0);
plot(x(:,1),x(:,2),'ro');
hold on;
xmin=min(x(:,1));
xmax=max(x(:,1));
ymin=min(x(:,2));
ymax=max(x(:,2));
% 作图
ezplot(@(x,y)F(p,[x,y]),[-1+xmin,1+xmax,-1+ymin,1+ymax]);
title('曲线拟合');
legend('样本点','拟合曲线')