Demo entry 6850849

1

   

Submitted by anonymous on Jul 12, 2019 at 04:54
Language: Matlab. Code size: 1.0 kB.

%DMC控制算法
% DMC.m 动态矩阵控制( DMC)
clear all
Ts=1; %采样时间 Ts
num=[1.47];
den=[147 24.345 1 ];
% num=0.2713;
% den=[1 -0.8351 0 0 0 0];
G=tf(num,den); %连续系统
G=c2d(G,Ts); %被控对象离散化
[num,den,]=tfdata(G, 'v' );
N=200; %建模时域 N
[a]=step(G,1*Ts:Ts:N*Ts); %计算模型向量 a
M=1; %控制时域
P=50; %优化时域
for j=1:M
for i=1:P-j+1
A(i+j-1,j)=a(i,1);
end
end %动态矩阵 A
Q=1*eye(P); %误差权矩阵 Q
R=1*eye(M); %控制权矩阵 R
C=[1,zeros(1,M-1)]; %取首元素向量 C 1*M
E=[1,zeros(1,N-1)]; %取首元素向量 E 1*N
d=C*(A'*Q*A+R)^(-1)*A'*Q; %控制向量 d=[d1 d2 ...dp]
h=1*ones(1,N); %校正向量 h(N 维列向量)
I=[eye(P,P),zeros(P,N-P)]; %Yp0=I*YNo
S=[[zeros(N-1,1) eye(N-1)];[zeros(1,N-1),1]]; %N*N 移位阵 S
sim( 'DMCsimulink' ) %运行siumlink 文件
% sim( 'DMCOPC' ) %运行siumlink 文件
subplot(2,1,1); %图形显示
 plot(y, 'LineWidth' ,2);
hold on ;
plot(w,'r','LineWidth' ,2);
xlabel( '\fontsize{15}k' );
ylabel( '\fontsize{15}y,w' );
legend( ' 输出值' , ' 设定值' )
grid on ;
subplot(2,1,2);
plot(u, 'g' , 'LineWidth' ,2);
xlabel( '\fontsize{15}k' );
ylabel( '\fontsize{15}u' );
grid on ;

This snippet took 0.01 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).