该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
clc;clear all;close all;%%%二维直线拟合
%%%生成随机数据
%内点
mu=[0 0]; %均值
S=[1 2.5;2.5 8]; %协方差
data1=mvnrnd(mu,S,200); %产生200个高斯分布数据
%外点
mu=[2 2];
S=[8 0;0 8];
data2=mvnrnd(mu,S,100); %产生100个噪声数据
%合并数据
data=[data1',data2'];
iter = 100; %%% 绘制数据点
figure;plot(data(1,:),data(2,:),'o');hold on; % 显示数据点
number = size(data,2); % 总点数
bestParameter1=0; bestParameter2=0; % 最佳匹配的参数
sigma = 1;
pretotal=0; %符合拟合模型的数据的个数 for i=1:iter
%%% 随机选择两个点
idx = randperm(number,2);
sample = data(:,idx); %%%拟合直线方程 y=kx+b
line = zeros(1,3);
x = sample(:, 1);
y = sample(:, 2); k=(y(1)-y(2))/(x(1)-x(2)); %直线斜率
b = y(1) - k*x(1);
li