You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于最小二乘法的椭圆拟合Matlab代码翻译及技术问询

我来帮你把这段最小二乘椭圆拟合的Matlab代码注释转成中文,同时详细拆解它的实现逻辑:

带中文注释的完整Matlab代码

% 输入离散采样点的x坐标(列向量形式)
x = [1.02 .95 .87 .77 .67 .56 .44 .30 .16 .01]'; 
% 输入离散采样点的y坐标(列向量形式)
y = [0.39 .32 .27 .22 .18 .15 .13 .12 .13 .15]'; 

% 构建线性方程组 Ax = b
N = numel(x); % 获取采样点的总数量
% 构造系数矩阵A:每一行对应一个点的x²、xy、y²、x、y项
A = [x.^2 x.*y y.^2 x y]; 
% 构造常数项向量b:对应椭圆归一化方程移项后的-1
b = [-1*ones(N,1)]; 

% 求解线性方程组得到系数向量 coeffs = [a b c d e]'
% 注:原代码存在变量名冲突,这里将系数b重命名为b_coeff避免覆盖
coeffs = A\b; 
a = coeffs(1);
b_coeff = coeffs(2); 
c = coeffs(3); 
d = coeffs(4); 
e = coeffs(5); 

% 绘制原始离散采样点,蓝色圆形标记
plot(x,y, 'bo') 
hold on % 保持绘图窗口,后续叠加绘制拟合的椭圆

% 准备通过等高线图绘制拟合的椭圆
xmin = min(x); % 获取x坐标的最小值
xmax = max(x); % 获取x坐标的最大值
ymin = min(y); % 获取y坐标的最小值
ymax = max(y); % 获取y坐标的最大值

% 设置网格步长:步长越小,绘制的椭圆边缘越平滑
deltay = .001; 
deltax = .001; 

% 创建覆盖采样点范围的网格数组X和Y
[X,Y] = meshgrid(xmin:deltax:xmax, ymin:deltay:ymax);
% 计算网格点对应的椭圆方程表达式值
Z = a*X.^2 + b_coeff*X.*Y + c*Y.^2 + d*X + e*Y + 1;
% 绘制Z=0的等高线(即椭圆边界),红色实线
contour(X,Y,Z, [0 0], 'r-');
hold off % 释放绘图窗口

椭圆拟合实现逻辑技术解析

1. 椭圆方程的线性化改造

通用二次曲线的表达式为:a x² + b xy + c y² + d x + e y + f = 0,其中当判别式b² - 4ac < 0时,曲线为椭圆。为了能用最小二乘法求解(最小二乘法只适用于线性模型),我们对方程做归一化处理:两边除以-f(假设f≠0),得到A x² + B xy + C y² + D x + E y + 1 = 0,这样就把原本的非线性问题转化为了线性方程组求解问题。

2. 构建超定线性方程组

对于每个采样点(x_i, y_i),代入归一化后的方程可得:A x_i² + B x_i y_i + C y_i² + D x_i + E y_i = -1。将所有采样点的方程组合起来,形成矩阵形式A_mat * coeffs = b_vec:

  • A_mat是N×5的矩阵,每一行对应一个采样点的[x_i², x_i y_i, y_i², x_i, y_i]
  • b_vec是N×1的向量,每个元素都是-1
  • coeffs是待求解的系数向量[A, B, C, D, E]'

由于采样点数量N远大于未知系数的数量(5个),这是一个超定方程组,无法直接求得精确解,最小二乘法会找到使所有点代入方程的误差平方和最小的最优解。

3. 求解系数向量

Matlab中的反斜杠运算符\针对超定方程组会自动计算最小二乘解,本质是通过QR分解等数值方法求解(A_mat'*A_mat)*coeffs = A_mat'*b_vec,得到最优的系数向量。

4. 拟合椭圆的可视化

我们通过生成覆盖采样点坐标范围的网格X,Y,计算每个网格点对应的二次曲线表达式值Z,然后绘制Z=0的等高线——这条等高线正好满足椭圆方程,也就是我们拟合得到的椭圆边界。用contour(X,Y,Z, [0 0])可以精准提取出所有满足方程的点,从而画出平滑的椭圆曲线。

小提醒

原代码存在变量名冲突问题:把系数b和常数项向量b用了同一个名字,会导致后续系数b被覆盖,所以在修改后的代码中我将系数b重命名为b_coeff,避免运行时出错。

内容的提问来源于stack exchange,提问作者Ryan Porter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:22:30