4. 实验设计与数据采集
系统辨识的质量在很大程度上由实验阶段决定。模型结构再合理、算法再精细,如果输入信号没有充分激励系统的动态特性,或者采样频率选择不当造成信息丢失,后续参数估计就只能在一个信息不完整的数据集上做文章。本节围绕“怎样设计一次有效的辨识实验”展开,重点讨论输入信号类型、采样频率选择、数据预处理,并给出可直接运行的 MATLAB 实现。
一、输入信号类型与激励特性
辨识实验的输入信号必须满足两个基本条件:一是能够持续激励系统的所有关注模态,二是与噪声、扰动不相关。常用的输入信号有以下几类。
- 阶跃信号:实现简单,适合粗略观察系统增益、时间常数和纯滞后,但频谱能量集中在低频,对高频动态激励不足,通常只用于初步测试。
- 脉冲信号:能量有限,抗噪能力差,实际中较少单独使用。
- 伪随机二进制序列(PRBS):幅值只在两个电平间跳变,频谱接近白噪声,工程实现容易,是工业辨识中最常用的输入之一。其周期长度由阶数 n 决定,周期为 2^n−1 个采样点。
- 多正弦信号:将能量集中在若干指定频率上,适合频域辨识或需要重点激励某频段的场合。
- 扫频信号(Chirp):频率随时间线性或对数变化,可在一次实验中覆盖较宽频带,常用于频率响应估计。
选择信号类型时,应结合被辨识系统的频带范围和允许的实验时长。例如,一个热工过程的主时间常数在数百秒量级,使用 PRBS 时其时钟周期应取主时间常数的 1/3~1/1,序列长度需覆盖 3~5 个主时间常数,才能保证低频段被充分激励。
二、采样频率的选择
采样频率决定了数据中保留的信息量。采样过快会引入高频噪声、增加数据量和计算负担;采样过慢则会丢失系统动态,甚至造成频率混叠。工程上通常遵循以下原则:
- 采样频率应至少为系统关注最高频率的 5~10 倍,即 fs ≥ (5~10)·fmax。
- 若已知系统带宽 ωB,可取采样周期 Ts ≈ (1/5~1/10)·(1/ωB)。
- 对于一阶惯性系统,常取 Ts ≈ T/10~T/20,其中 T 为时间常数。
- 采样前必须加抗混叠低通滤波器,截止频率取 fs/2 以下。
例如,某电机转速环的闭环带宽约为 20 Hz,则采样频率宜取 100~200 Hz,对应采样周期 5~10 ms。若采样周期取 50 ms,则带宽边缘的动态会被严重衰减,辨识出的模型在高频段将明显失真。
三、数据预处理
采集到的原始数据通常包含直流偏置、趋势项、高频噪声和异常点,直接用于辨识会引入偏差。预处理一般包括以下步骤:
- 去均值:减去输入输出的平均值,消除直流工作点对模型参数的影响。
- 去趋势:用低阶多项式拟合并减去缓慢漂移,避免趋势项被误认为系统动态。
- 异常值剔除:根据 3σ 准则或中位数绝对偏差识别并替换明显偏离的采样点。
- 滤波:使用低通滤波器抑制高频噪声,但滤波会引入相位滞后,需对输入输出施加相同的滤波处理,保持两者时间对齐。
- 数据分段与选取:剔除实验开始阶段的过渡段和结束阶段的非平稳段,保留中间平稳且激励充分的数据段。
四、MATLAB 实现
下面给出一段完整的实验数据生成与预处理示例。该示例构造一个二阶系统,用 PRBS 作为输入,加入噪声后按上述流程处理。
% 1. 构造被辨识对象(示例:二阶系统)
Ts = 0.05; % 采样周期 50 ms
num = [1]; den = [1, 1.2, 1];
sys = tf(num, den);
% 2. 生成 PRBS 输入
n = 10; % 阶数,周期 2^10-1 = 1023 点
Tclk = 5*Ts; % 时钟周期
u = idinput(1023, 'prbs', [0 1], [-1 1]);
u = repmat(u, 3, 1); % 重复 3 个周期,保证激励充分
% 3. 仿真得到输出并叠加噪声
t = (0:length(u)-1)'*Ts;
y = lsim(sys, u, t);
y = y + 0.02*randn(size(y)); % 加入 2% 噪声
% 4. 数据预处理
u = u - mean(u); % 去均值
y = y - mean(y);
y = detrend(y, 1); % 去线性趋势
idx = abs(y - median(y)) < 3*std(y); % 3σ 异常值检测
u = u(idx); y = y(idx);
% 5. 低通滤波(输入输出使用同一滤波器)
fc = 5; % 截止频率 5 Hz
[b, a] = butter(2, fc/(1/(2*Ts)));
uf = filtfilt(b, a, u);
yf = filtfilt(b, a, y);
% 6. 构造 iddata 对象,供后续辨识使用
data = iddata(yf, uf, Ts);
data.InputName = 'Voltage';
data.OutputName = 'Speed';
运行后可通过 data 对象查看数据长度、采样周期和输入输出范围。若使用 iddata 的绘图功能,可直观检查输入输出是否平稳、是否存在异常段。实际实验中,还应在采集阶段记录实验条件、传感器量程和滤波器设置,以便后续复现和排查。
五、实验设计中的常见问题
第一,输入幅值过小,信噪比不足,辨识结果方差大;幅值过大则可能使系统进入非线性区。建议在安全范围内取使输出达到正常工况 10%~30% 的幅值。第二,实验时长不足,低频段未被充分激励,导致静态增益估计不准。第三,采样频率与滤波器截止频率不匹配,造成混叠。第四,输入输出通道存在不同延时或量程不一致,未做对齐和归一化处理。
为便于快速对照,下表汇总了本节关键参数的选择依据。
| 参数 | 选择依据 | 示例值 |
|---|---|---|
| 输入信号类型 | 需覆盖关注频带,与噪声不相关 | PRBS |
| PRBS 时钟周期 | 约为主时间常数的 1/3~1/1 | 0.25 s |
| 采样周期 Ts | 带宽的 1/5~1/10 | 0.05 s |
| 抗混叠截止频率 | 低于 fs/2 | 5 Hz |
| 实验时长 | 覆盖 3~5 个主时间常数 | 约 150 s |
完成上述流程后,可将 data 对象直接送入 tfest、n4sid 或 arx 等辨识函数。若辨识结果与实际响应偏差较大,应优先检查实验设计环节:输入是否充分激励、采样是否合理、预处理是否破坏了数据一致性。只有在数据质量得到保证的前提下,后续的模型结构选择和参数估计才有意义。