第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 是工程中最常用的在线算法。下一章我们会把这些知识用到实际的电机参数辨识中,到时候你会看到这些公式是怎么在代码里跑起来的。
公众号:蓝海资料掘金营,微信deep3321