Fitting ellipse

L1 — L6分别是六对FP腔的距离,coreside_diameter.txt存储L1~L6,放在Uniformity_Test文件夹当中
十二边形所对应的六对FP腔
FP腔
ax & y分别为所对应的坐标位置
椭圆示意图

椭圆的一般方程式为:Ax^2 + 2Bxy + Cy^2 + Dx + Ey + F = 0
参考:来自于维基百科的椭圆方程介绍

clear; clc; close all;
load('coreside_diameter.txt');
date = coreside_diameter(:,2);
L1 = date(1);   L2 = date(2);   L3 = date(3);
L4 = date(4);   L5 = date(5);   L6 = date(6);
ax = [L1*sin(pi/6)/2, 0, -L3*sin(pi/6)/2, -L4*cos(pi/6)/2, -L5/2, -L6*cos(pi/6)/2, -L1*sin(pi/6)/2, 0, L3*sin(pi/6)/2, L4*cos(pi/6)/2, L5/2, L6*cos(pi/6)/2];
y = [L1*cos(pi/6)/2, L2/2, L3*cos(pi/6)/2, L4*cos(pi/3)/2, 0, -L6*cos(pi/3)/2, -L1*cos(pi/6)/2, -L2/2, -L3*cos(pi/6)/2, -L4*cos(pi/3)/2, 0, L6*cos(pi/3)/2];

% 设出圆锥曲线方程
F=@(p,x)p(1)*x(:,1).^2+p(2)*x(:,1).*x(:,2)+p(3)*x(:,2).^2+p(4)*x(:,1)+p(5)*x(:,2)+p(6);
% 离散数据点
for i = 1:length(y)
    x(i,1) = ax(i);
    x(i,2) = y(i);
end

p0=[1 1 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('样本点','拟合曲线')

如果ellipse的形心在原点那么它的方程式可以简化为:Ax^2 + 2Bxy + Cy^2 + f = 0

今后课题中主要使用以下代码

clear; clc; close all;
load('coreside_diameter.txt');
date = coreside_diameter(:,2);
L1 = date(1);   L2 = date(2);   L3 = date(3);
L4 = date(4);   L5 = date(5);   L6 = date(6);
ax = [L1*sin(pi/6)/2, 0, -L3*sin(pi/6)/2, -L4*cos(pi/6)/2, -L5/2, -L6*cos(pi/6)/2, -L1*sin(pi/6)/2, 0, L3*sin(pi/6)/2, L4*cos(pi/6)/2, L5/2, L6*cos(pi/6)/2];
y = [L1*cos(pi/6)/2, L2/2, L3*cos(pi/6)/2, L4*cos(pi/3)/2, 0, -L6*cos(pi/3)/2, -L1*cos(pi/6)/2, -L2/2, -L3*cos(pi/6)/2, -L4*cos(pi/3)/2, 0, L6*cos(pi/3)/2];

% 设出圆锥曲线方程
F=@(p,x)p(1)*x(:,1).^2+p(2)*x(:,1).*x(:,2)+p(3)*x(:,2).^2+p(4);
% 离散数据点
for i = 1:length(y)
    x(i,1) = ax(i);
    x(i,2) = y(i);
end

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('样本点','拟合曲线')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值