clc
clear
close all
data1 = xlsread('E:\SILC\project\VLP-16扫描数据\line14\single0.csv');
data=data1(1:1799,1:3);
% 显示数据点
% plot3(data(:,1),data(:,2),data(:,3),'b');
% hold on
H16=zeros(2,1);
iter =500; %迭代次数
number = size(data,1); % 总点数
sigma = 1;
pretotal=1000; %符合拟合模型的数据的个数
sample1=[]; %选取的拟合点
for i=1:iter
% 随机选择部分点
idx = randperm(number,500);
sample = data(idx,:);
X=sample; %拟合圆形
n=length(X(:,1));
y=ones(n,1);
b=[rand(1)*1000 rand(1) rand(1)];
fun=inline('X(:,1).^2+X(:,2).^2+a(1)*X(:,1)+a(2)*X(:,2)+a(3)','a','X');
[a,r,J] = nlinfit(X,y,fun,b);
vpa(a,10);
%圆心
OX =-a(1)/2;
OY =-a(2)

这篇博客介绍了如何在MATLAB中计算拟合圆的残差,通过随机选择部分点进行迭代,使用nlinfit进行非线性拟合,并通过RANSAC算法去除噪声数据,最终得到拟合圆的中心坐标和半径。内容包括数据读取、残差计算、图形绘制以及去噪数据的保存。
最低0.47元/天 解锁文章
279

被折叠的 条评论
为什么被折叠?



