MPC_Test.m
%% 清屏
clear ;
close all;
clc;
%% 加载 optim package,若使用matlab,则注释掉此行
% pkg load optim;
%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 第一步,定义状态空间矩阵
%% 定义状态矩阵 A, n x n 矩阵
A = [1 0.1; -1 2]; % 两输入
% A = [1 0.1; 0 2]; % 单输入
n= size (A,1);
%% 定义输入矩阵 B, n x p 矩阵
B = [ 0.2 1; 0.5 2]; % 两输入
% B = [ 0; 0.5]; % 单输入
p = size(B,2);
%% 定义Q矩阵,n x n 矩阵
Q=[100 0;0 1];
%% 定义F矩阵,n x n 矩阵
F=[100 0;0 1];
%% 定义R矩阵,p x p 矩阵
R=[1 0 ; 0 .1]; % 两输入
% R=[.1]; % 单输入
%% 定义step数量k
k_steps=100;
%% 定义矩阵 X_K, n x k 矩 阵
X_K = zeros(n,k_steps);
%% 初始状态变量值, n x 1 向量
X_K(:,1) =[20;-20];
%% 定义输入矩阵 U_K, p x k 矩阵
U_K=zeros(p,k_steps);
%% 定义预测区间K
N=5;
%% Call MPC_Matrices 函数 求得 E,H矩阵
[E,H]=MPC_Matrices(A,B,Q,R,F,N);
%% 计算每一步的状态变量的值
for k = 1 : k_steps
%% 求得U_K(:,k)
U_K(:,k) = Prediction(X_K(:,k),E,H,N,p);
%% 计算第k+1步时状态变量的值
X_K(:,k+1)=(A*X_K(:,k)+B*U_K(:,k));
end
%% 绘制状态变量和输入的变化
subplot (2, 1, 1);
hold;
for i =1 :size (X_K,1)
plot (X_K(

这篇博客详细介绍了如何在MATLAB环境中利用预测控制理论进行动态系统的状态预测和控制。首先,定义了状态空间矩阵A和B,接着通过MPC_Matrices函数计算了E和H矩阵,然后利用Prediction函数进行输入优化。整个过程展示了MATLAB中预测控制算法的步骤,包括状态变量和输入的计算与绘图,最后得出动态变化的图形结果。
最低0.47元/天 解锁文章
1565

被折叠的 条评论
为什么被折叠?



