📄 dmc.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 + -