• 大小: 3KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-06
  • 语言: Matlab
  • 标签: dmc  

资源简介

用MATLAB设计实现动态矩阵dmc预测控制的源代码,方便学习交流

资源截图

代码片段和文件信息

clear all;%以下2--5语句与[at]=step(tf(numden‘inputdelay‘3))等价 
close all; 
num=2.994; 
den=[82^2 164 1]; 
;%基本算法对象2 
Ts=5; 
dt=Ts; 
t0=1:dt:1045; 
Delta_u=0;y=0; 
[aat]=step(numdent0); 
a=aa(2:209); 
%也对aaa1=0;aaa2=0; 
%for i=2:161 
%    aaa1(i)=exp(-Ts/82)*aaa1(i-1)+2.994*(1-exp(-Ts/82))*1;%零阶保持器下的差分方程; 
%     aaa2(i)=exp(-Ts/82)*aaa2(i-1)+(1-exp(-Ts/82))*aaa1(i); 
%end 
%a=aaa2(2:161); 
P=30; 
for i=1:P                                                                                                                                                
    Q(i)=1;   
end %误差加权系数 
 
Tr=3; 
ArfaR=exp(-Ts/Tr); 
M=30; 
 
for i=1:M 
    R(i)=0.3; 
end %控制加权系数 
Q=diag(Q);%误差加权矩阵 
R=diag(R);%控制加权矩阵 
 
N=length(a); 
%构造矩阵A,可以从Workspace复制,也可以由line5直接得出; 
 for i=1:P 
     for j=1:M   
         if i==j   
              A(ij)=a(1); 
         end  
         if i>j 
             A(ij)=a(i-j+1); 
         end 
         if i             A(ij)=0; 
         end 
     end  
 end 
 %构造矩阵A0b; 
 for i=1:P 
     for j=1:i+1 
         A0b(ij)=a(N); 
     end 
     for j=i+2:N 
         A0b(ij)=a(N-j+i+1); 
     end 
 end 
 %构造矩阵A0; 
 for i=1:P 
     for j=2:N-1 
         A0(ij)=A0b(ij)-A0b(ij+1); 

评论

共有 条评论