第4章:最小二乘法基础

各位同学,今天我们来聊聊电机参数辨识里最基础、也最实用的工具——最小二乘法。说实话,我刚入行那会儿,觉得这玩意儿就是一堆数学公式,离实际工程远着呢。直到有一次调一个伺服驱动器,电机参数全凭感觉设,结果跑起来抖得像筛糠……嗯,从那以后,我老老实实把最小二乘法捡起来,才发现这东西是真管用。

4.1 最小二乘原理

最小二乘法的核心思想,说白了就是:找一组参数,让模型预测值和实际测量值之间的误差平方和最小。你想想看,我们做电机控制,经常要估计电阻、电感这些参数。如果直接测,噪声大、不准。那怎么办?多测几组数据,然后找个最优解。

数学上,假设我们有 N 组观测数据 (x_i, y_i),想用一个线性模型 y = θ·x 来拟合。那么误差平方和就是:

J(θ) = Σ (y_i - θ·x_i)²

J(θ)θ 求导等于零,就能得到最优解。这就是最小二乘的闭式解:

θ = (XᵀX)⁻¹ XᵀY

这里 X 是输入矩阵,Y 是输出向量。公式看着简单,但实际用起来有个大问题——矩阵求逆。数据量一大,计算量就爆炸了。我在项目里遇到过,用单片机算一次求逆,CPU 直接卡死几毫秒,这谁受得了?

核心要点:最小二乘法的本质是「误差平方最小化」。它假设噪声是零均值、同方差的高斯白噪声。如果实际噪声不满足这个条件,结果会偏。

4.2 递推最小二乘(RLS)算法

既然批处理方式计算量太大,那我们就换个思路——来一组数据,更新一次参数。这就是递推最小二乘(RLS)的核心思想。

RLS 的递推公式长这样:

K(k) = P(k-1)·x(k) / [λ + x(k)ᵀ·P(k-1)·x(k)]
θ(k) = θ(k-1) + K(k)·[y(k) - x(k)ᵀ·θ(k-1)]
P(k) = [I - K(k)·x(k)ᵀ]·P(k-1) / λ

其中:

  • K(k) 是增益矩阵,决定新数据对参数更新的贡献
  • P(k) 是协方差矩阵,反映参数估计的不确定性
  • λ 是遗忘因子,后面会细说

我个人习惯把 RLS 理解成「带记忆的滤波器」。每次新数据来了,它不会把旧数据全扔掉,而是根据协方差矩阵 P 来权衡新旧信息的权重。刚开始 P 很大,说明参数不确定,新数据权重高;随着数据积累,P 越来越小,参数趋于稳定。

实用技巧:初始化时,P(0) 一般设为单位矩阵乘以一个大数(比如 1000),θ(0) 设为零向量或经验值。这样算法能快速收敛。

4.3 带遗忘因子的RLS

标准 RLS 有个毛病——参数一旦收敛,就很难再跟踪变化。电机运行中,电阻会随温度变化,电感会随电流饱和。如果算法「记性太好」,旧数据会拖慢对新变化的响应。

解决办法就是引入遗忘因子 λ(0 < λ ≤ 1)。λ 越小,旧数据被遗忘得越快。我一般这样选:

应用场景 λ 取值 说明
参数缓慢变化(如温升) 0.98 ~ 0.995 兼顾稳定性和跟踪速度
参数快速变化(如负载突变) 0.9 ~ 0.95 快速响应,但噪声敏感
参数基本不变 1.0 标准RLS,无遗忘

我曾经在一个项目中,电机刚开始运行正常,跑了半小时后参数估计值开始漂移。查了半天,发现是温升导致电阻变化了 15%。加上遗忘因子 λ=0.98 后,算法能自动跟踪电阻变化,问题解决。

注意:λ 太小会导致协方差矩阵 P 膨胀,参数估计会剧烈抖动。我建议 λ 不要低于 0.9,除非你明确知道系统噪声特性。

4.4 仿真验证

光说不练假把式。我们用一个简单的电机电阻辨识例子来验证 RLS 的效果。

仿真模型:直流电机电枢回路,电压 u = R·i + L·di/dt。假设电感已知,只辨识电阻 R

仿真条件

  • 真实电阻 R = 2.0 Ω,在 t=5s 时突变为 2.5 Ω
  • 采样频率 1 kHz
  • 加入 0.1V 的测量噪声

MATLAB 代码示例:

% RLS 参数初始化
theta = 0;          % 电阻初始估计
P = 1000;           % 协方差矩阵
lambda = 0.98;      % 遗忘因子

% 主循环
for k = 1:N
    % 获取新数据
    u = voltage(k);
    i = current(k);
    
    % RLS 递推
    K = P * i / (lambda + i * P * i);
    theta = theta + K * (u - i * theta);
    P = (1 - K * i) * P / lambda;
    
    % 保存结果
    R_est(k) = theta;
end

仿真结果会显示:前 0.5s 内,估计值从 0 快速收敛到 2.0 Ω;t=5s 电阻突变后,估计值在大约 0.3s 内跟踪到 2.5 Ω。这就是带遗忘因子 RLS 的魅力——既能快速收敛,又能跟踪变化。

经验之谈:实际调试时,我建议先用离线数据跑一遍标准最小二乘,得到参数的大致范围。再用 RLS 在线微调。这样既能保证初始精度,又能适应工况变化。

知识体系总览

下面这张图总结了本章的核心逻辑:

最小二乘法知识体系 最小二乘原理 批处理最小二乘 递推最小二乘 (RLS) 带遗忘因子的RLS 矩阵求逆,计算量大 递推更新,实时性好 跟踪时变参数 应用:电机电阻/电感在线辨识 从原理到递推,再到遗忘因子,最终落地到电机参数辨识

好了,这一章的内容就到这里。最小二乘法是参数辨识的基石,RLS 是工程中最常用的在线算法。下一章我们会把这些知识用到实际的电机参数辨识中,到时候你会看到这些公式是怎么在代码里跑起来的。


公众号:蓝海资料掘金营,微信deep3321