线性最小二乘拟合实验

一、实验目的

掌握最小二乘优化原理,及其在数据分析中的应用。

二、实验内容

必做项:

(1)仿真生成直线观测数据,根据上述直线拟合公式推导编写直线拟合函数,然后拟合直线方程,画出观测数据和拟合直线。

(2)仿真生成圆曲线观测数据,根据上述圆拟合公式推导编写圆拟合函数,然后拟合圆曲线方程,画出观测数据和拟合圆曲线。

(3)利用最小二乘圆拟合法,检测数字图像中的圆。

步骤 1:读入数字图像文件,检测图像中的边缘;

步骤 2:对边缘进行连通域标记;

步骤 3:根据长宽比等简单特征,对每个连通域进行初步筛选;

步骤 4:对经过筛选的每个连通域进行圆拟合;

步骤 5:计算圆拟合的误差,对拟合误差过大的圆进行剔除;

步骤 6:画出拟合圆曲线和圆形 

三、实验原理

该实验类型为应用性实验:给定输入输出的样本数据集(xi,yi),选择模型函数 f(),w 为函数参数,通过最小化预测值 f(xi)与观测值yi之间的误差总和,来确定函数 f()中的相关参数w。

miniei=iati+b-yi2

直线拟合的公式推导如下:目标函数:miniei=iati+b-yi2

 ,二次函数取最小值的地方,偏导数为0:∂f(a,b)∂a=ai=1Nxi2+bi=1Nxi2-i=1Nxiyi=0

 ,代入函数具体形式:

∂f(a,b)∂a=ai=1Nxi2+bi=1Nxi2-i=1Nxiyi=0

,

 ∂f(a,b)∂b=ai=1Nti2+Nb-i=1Nyi=0

两个方程,两个未知数。求解方程即可得到参数 a,b

圆拟合的公式推导如下:

四、实验结果分析

(1) 仿真生成直线观测数据,根据直线拟合公式推导编写直线拟合函数,然后拟合直线方程,画出观测数据和拟合直线。具体代码如下:

x=[0.5,1,1.5,2,2.5,3,4,8,9];

y=[2.3,2.6,3.3,3.8,4.5,4.6,5.5,5.9,6.3];

[k,b]=linefit(x,y);

y1=polyval([k,b],x);

plot(x,y,'*',x,y1,'r-');

xlabel('x');ylabel('y');

运行后可以得到如图1所示的结果。

本程序采用系统自带函数linefit(),polyval()进行直线拟合,由图1可以看到其正确的拟合了直线。

图 1

(2)仿真生成圆曲线观测数据,根据圆拟合公式推导编写圆拟合函数,然后拟合圆曲线方程,画出观测数据和拟合圆曲线。

N=20; %圆上采样 20 个点

noise=0.1*randn(N,1)

n = 0:N-1;

%每个点对应的角度

theta = n*2*pi/N;

%噪声数据

noise = 0.1*randn(N,1);

%半径为 1,叠加噪声

r = 5*ones(N,1)+noise;

%计算 x 坐标,再加上平移量

x = r.*cos(theta')+6;

%计算 y 坐标,再加上 y 方向平移量

y = r.*sin(theta')+8; scatter(x,y);

hold on;

axis equal;

[R,A,B]=circleFit(x,y,N)

angle=0:0.05:2*pi;

x1=R.*cos(angle')+A;

y1=R.*cos(angle')+B;

plot(x1,y1,R)

在命令窗口运行,可以得到如图2所示的输出结果。

图 2

由结果可以看到编写的函数circleFit完成了对圆曲线方程的拟合。

3)利用最小二乘圆拟合法,检测数字图像中的圆。

f=imread('1.jpg');

BW=im2bw(f);

BW=bwperim(BW); % 提取二值图像图像边缘

%进行连通域标记,一个连通域表示一个曲线的样本数据集

[L,num] = bwlabel(BW,8); %8 表示 8 连通 4 表示 4 连通

RGB=label2rgb(L);

figure;

imshow(RGB);

hold on;

[M,N]=size(f);

for k =2:num

[y,x] = find(L == k); %获取第 k 个连通域的所有像素坐标

if length(x)<20 %轮廓的像素数量表示周长

continue;

end

HWration = (max(y)-min(y)+1)./(max(x)-min(x)+1);

if HWration>0.8 && HWration<1.2 %计算每个轮廓的长宽比

%拟合

[R,A,B,MAENormal] = circleFit(x,y); %圆拟合的代码

if MAENormal<0.1 %拟合误差

plot(A,B,'r+');

LCircle = [LCircle,k];

end

end

en

可以得到如图3所示的结果:

图 3

由图3可知,本次编码成功实现了利用最小二乘圆拟合法,检测数字图像中的圆。步骤 1:读入数字图像文件,检测图像中的边缘;步骤 2:对边缘进行连通域标记;步骤 3:根据长宽比等简单特征,对每个连通域进行初步筛选;步骤 4:对经过筛选的每个连通域进行圆拟合;步骤 5:计算圆拟合的误差,对拟合误差过大的圆进行剔除;步骤 6:画出拟合圆曲线和圆形。

五、实验小结

本次实验在理论学习的基础上,加深了对掌握最小二乘优化原理的理解,及其在数据分析中的应用。最小二乘法原理是一种常用的数学优化方法,其基本原理是通过最小化损失函数的值来估计参数,从而拟合数据。在研究两个变量之间的相互关系时,可以得到一系列成对的数据,将这些数据描绘在坐标系中,建立直线方程,应用最小二乘法原理,将实测值与计算值的离差的平方和最小为“优化判据”。 最小二乘法的目标是找到一条直线,使得训练数据集中的点到这条直线的距离平方和最小。

线性最小二乘拟合中的QR分解是一种数学方法,用于解决线性最小二乘问题,即找到一组系数,使得一组数据点与某个线性模型之间的差异(即残差)的平方和最小。QR分解涉及将一个矩阵A分解为一个正交矩阵Q和一个上三角矩阵R。 具体来说,在线性最小二乘问题中,我们通常有如下形式的方程组: Ax ≈ b 其中,A是一个m×n的矩阵(m≥n),x是我们要找的n维系数向量,b是一个m维数据向量。由于m通常大于n,这是一个超定系统,意味着没有精确解。我们使用最小二乘法来找到一个近似解,即找到一个x,使得||Ax-b||是最小的。 利用QR分解,可以将A分解为: A = QR 这里,Q是一个m×n的矩阵,其列向量构成了一个标准正交基,R是一个n×n的上三角矩阵。QR分解可以通过多种算法实现,如Gram-Schmidt正交化过程、Householder变换或Givens旋转。 将A = QR代入Ax ≈ b中,得到: QRx ≈ b 由于Q是正交矩阵,其逆矩阵等于其转置矩阵,即Q^(-1) = Q^T,因此可以左乘Q^T得到: Rx ≈ Q^Tb 现在问题转化为求解上三角系统Rx ≈ Q^Tb,由于R是上三角矩阵,我们可以使用回代法(back substitution)来求解x。这个过程通常比直接求解原方程组Ax ≈ b要稳定且高效。 总结一下,QR分解在线性最小二乘拟合中的应用流程如下: 1. 对矩阵A进行QR分解,得到正交矩阵Q和上三角矩阵R。 2. 计算Q^Tb得到新的向量b'。 3. 解上三角方程组Rx ≈ b'得到x。 4. 找到了x之后,就可以用它来计算拟合模型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值