1. 课程导入与系统辨识概览

在控制、信号处理、电力电子、机器人、化工过程等领域,我们经常面对一个已经存在、正在运行的真实系统,却拿不到它精确的物理模型。系统辨识(System Identification)要解决的正是这个问题:利用系统在实验或运行中产生的输入—输出数据,结合先验知识与候选模型结构,估计出一个能够解释数据、并可用于预测、控制或监测的数学模型。它既不是纯粹的物理建模,也不是单纯的曲线拟合,而是"数据 + 结构 + 准则 + 算法"四者协同的建模方法。

理解系统辨识,先要区分三个容易混淆的概念。物理建模从质量、能量、电路定律出发推导微分方程,参数具有明确物理意义,但复杂对象往往难以精确写出方程;黑箱辨识只依赖数据,模型参数通常没有直接物理含义,却能很好地复现输入输出关系;灰箱辨识介于两者之间,用物理知识确定模型结构,用数据估计未知参数。MATLAB 的 System Identification Toolbox 对这三类任务都提供支持,本课程的主线是"以数据为核心、以结构为约束、以验证为闭环"。

系统辨识的典型任务与流程

一个完整的辨识任务通常包含以下环节,它们并非严格线性,而是反复迭代的:

  1. 明确目标:模型用于什么?是设计 PID 控制器、做前馈补偿、还是故障检测?目标决定了所需模型的精度、频段和结构复杂度。
  2. 实验设计:选择激励信号(阶跃、伪随机二进制序列 PRBS、扫频 chirp)、采样周期、实验时长与幅值范围,保证激励覆盖关心的频段且不使系统进入非线性区。
  3. 数据预处理:去趋势、去均值、剔除异常段、重采样、滤波,必要时分离训练集与验证集。
  4. 模型结构选择:ARX、ARMAX、OE、BJ、状态空间、传递函数、非线性 Hammerstein–Wiener 等。
  5. 参数估计:最小二乘、极大似然、预测误差法、子空间法、递推算法等。
  6. 模型验证:残差白性检验、拟合度 FIT、最终预测误差、与验证数据的交叉比对。
  7. 模型应用与迭代:投入控制或预测,若性能不足则回到结构或实验设计环节。

下面这张图把上述流程与 MATLAB 工具链对应起来,帮助建立"任务—工具—判据"的整体印象。

系统辨识任务流程与 MATLAB 工具链对应 ① 明确建模目标 控制 / 预测 / 监测 ② 实验设计 PRBS / 阶跃 / chirp ③ 数据预处理 去趋势 / 滤波 / 分段 ④ 模型结构选择 ARX/OE/BJ/SS ⑤ 参数估计 LS / PEM / 子空间 ⑥ 模型验证 残差 / FIT / 交叉验证 ⑦ 模型应用 控制器 / 预测器 验证不通过:回到实验设计或结构选择 MATLAB 工具链 iddata / detrend 数据对象与预处理 arx / armax / oe / bj 参数模型估计 n4sid / ssest 状态空间辨识 compare / resid 验证与残差分析 System Identification App 交互式建模界面

从"数据"到"模型"的关键判断

初学者最容易忽略的是:辨识结果的好坏,往往在实验设计阶段就已经决定。若激励信号能量集中在低频,却要用模型描述高频谐振,任何算法都无法弥补。因此,采样周期应满足 Ts 至少比系统最快时间常数小 5~10 倍;PRBS 的时钟周期要覆盖关心的频带;数据长度要保证待估参数有足够的信噪比。以典型的一阶惯性对象 G(s)=K/(Ts+1) 为例,若 K≈2、T≈0.5 s,采样周期取 Ts=0.05 s,采集 2000 点(约 100 s),用 PRBS 幅值 ±1 激励,通常能得到拟合度 90% 以上的 ARX 模型。

模型验证不能只看训练数据上的拟合曲线。应把数据分成估计集与验证集,用 compare 查看 FIT 百分比,用 resid 检查残差是否接近白噪声、是否与输入互相关。若残差存在明显自相关,说明模型阶次不足或结构不合适;若残差与输入相关,说明还有未被模型捕获的动态。只有通过验证的模型,才值得投入控制器设计。

学习路径建议:先掌握 iddata 与 detrend 的数据组织方式,再依次练习 arx、armax、oe、bj 四种参数模型,随后进入 n4sid/ssest 状态空间辨识,最后用 compare、resid、predict 完成验证与预测。整个课程将围绕这条主线,逐步加入非线性、递推与闭环辨识等进阶内容。

需要强调的是,系统辨识不是"一次跑通"的算法,而是一个"设计—估计—验证—修正"的闭环。MATLAB 提供的 App 与命令行函数只是工具,真正决定模型质量的是对系统物理特性的理解、对激励与采样条件的把握,以及对验证结果的正确判读。本章建立的这张流程与工具链地图,将作为后续每一章定位自身任务的参照。