⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dmc.m

📁 预测控制中动态矩阵控制(DMC)的Matlab代码
💻 M
字号:
%----------------------------subfunction----------------------------------- 
function [UUU,YYY,ZZZ,z,zz,u,a]=DMC(P,M,Q,R,RA,RB,e,TT,h,c,L,xx,na,nb) 
[A,B,z,zz,u]=identification(RA,RB,L,xx,na,nb); %A、B为辩识后的传递函数向量 
y=zeros(P,1); %初始预测值y 
a=stepresponse(P,A,B); %求阶越响应 
[AA,s,e1]=DY(P,M,a); %赋值动态矩阵AA,移位矩阵s,首1矩阵 e1 
ny=length(RA)-1; %取实际对象输出时滞 
nu=length(RB)-1; %取实际对象输入时滞 
YY(1:TT)=0; %初始时刻之前输出为0 
UU(1:TT)=0; %初始时刻之前输入为0 
for t=1:TT 
w=expectation(c,e,P,YY); %计算期望值 
ZZZ(t)=w(1); %ZZZ向量记录期望值 
du=DU(AA,Q,R,w,y,e1); %计算Δu 
y=y+a*du; %加入Δu后的输出预测值 
UU(2:end)=UU(1:end-1); %将UU的第i项移到i+1项 
UU(1)=du+UU(2); %UU(1)保存当前输入 
UUU(t)=UU(1); %UUU向量记录当前输入 
Y=RB*UU(1:nu+1)'-RA(2:ny+1)*YY(1:ny)'; %计算实际对象输出 Y 
if na>=1 
YY(2:end)=YY(1:end-1); 
end %将YY的第i项移到i+1项 
YY(1)=Y; %YY(1)保存加入Δu后对象实际输出 
YYY(t)=Y; %YYY向量记录当前输出 
ee=Y-y(1); %计算预测输出与实际输出的差 
y=y+h*ee; %预测输出修正 
y=s*y; %预测输出向量移位 
end 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -