一、先验知识:Toeplitz 矩阵——Toeplitz Matrix:
二、符号注解——Notation for Symbols:
三、MATLAB仿真代码——Matlab Simulation Code:
定义一个函数mpcgain,来计算模型的增益。
function [Phi_Phi, Phi_F, Phi_R, A_e, B_e, C_e] = mpcgain(Ap, Bp, Cp, Nc, Np);
[m1, n1] = size(Cp);
[n1, n_in] = size(Bp);
A_e = eye(n1 + m1, n1 + m1);
A_e(1 : n1, 1 : n1) = Ap;
A_e(n1 + 1 : n1 + m1, 1 : n1) = Cp * Ap;
B_e = zeros(n1 + m1, n_in);
B_e(1 : n1, :) = Bp;
B_e(n1 + 1 : n1 + m1, :) = Cp * Bp;
C_e = zeros(m1, n1 + m1);
C_e( :, n1 + 1 : n1 + m1) = eye(m1, m1);
n = n1 + m1;
h(1, :) = C_e;
F(1, :) = C_e * A_e;
for kk = 2 : Np
h(kk, :) = h(kk-1, :) * A_e;
F(kk, :) = F(kk-1, :) * A_e;
end
v = h * B_e;
Phi = zeros(Np, Nc);
Phi(:, 1) = v;
for i = 2 : Nc
Phi(:, i) = [zeros(i-1, 1);v(1:Np-i+1, 1)];
end
BarRs = ones(Np, 1);
Phi_Phi = Phi' * Phi;
Phi_F = Phi' * F;
Phi_R = Phi' * BarRs;
四、运行结果——Simulation Result:
参数选择:
matlab代码:
Ap = 0.8; Bp = 0.1; Cp = 1; Nc = 4; Np = 10;
[Phi_Phi, Phi_F, Phi_R, A_e, B_e, C_e] = mpcgain(Ap, Bp, Cp, Nc, Np)
输出:
对比书第11页结果,可知输出正确。
五、参考文献 Reference
Liuping Wang, Model Predictive Control System Design and Implementation Using MATLAB, Springer, London, 2009.