1. 线性时变系统建模基础
在控制工程领域,线性时不变(LTI)系统是最基础的分析对象,其特性可以用常系数微分方程描述。但现实世界中,许多系统参数会随时间或工况变化,这就需要引入更复杂的建模方法。线性参数变化(LPV)模型作为LTI模型的扩展,能够通过时变参数捕捉系统的动态特性变化。
Matlab从R2023a版本开始,在Control System Toolbox中正式集成了LPV和LTV(线性时变)建模功能。与传统的LTI模型相比,这些模型的核心区别在于系统矩阵不再是固定值,而是可以表示为调度参数的函数或直接随时间变化。
重要提示:LPV模型要求参数变化速率远小于系统动态响应速度,否则会引发稳定性问题。这是使用此类模型的前提条件。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. LPV模型实现方法
2.1 状态空间表示法
在Matlab中创建LPV模型的核心函数是lpvss,其基本语法为:
matlab复制sys = lpvss('p',@(p) A(p),@(p) B(p),@(p) C(p),@(p) D(p))
其中p是调度参数,A/B/C/D矩阵都是关于p的函数句柄。例如对一个质量-弹簧系统,弹簧刚度k作为参数:
matlab复制% 定义参数变化范围
k_range = [1, 10];
% 创建LPV模型
A_fun = @(k) [0 1; -k/m -c/m];
B_fun = @(k) [0; 1/m];
sys_lpv = lpvss('k', A_fun, B_fun, [1 0], 0);
2.2 网格化建模方法
对于复杂非线性系统,可以通过在工作点网格上线性化来构建LPV模型。典型步骤包括:
- 选择调度参数及其变化范围
- 在参数空间创建均匀/非均匀网格
- 在每个网格点进行线性化
- 使用
ssInterpolant进行插值
matlab复制% 在k的5个等分点采样
k_values = linspace(1, 10, 5);
grid_models = arrayfun(@(k) linearize(nlsys, op_pt+k*delta), k_values);
% 创建插值模型
sys_interp = ssInterpolant(k_values, grid_mo
