tgf100
2012-09-17, 10:56
% +++++++++++++++++++++++++++++++++++++++++++++++++++++++
clc;
clear all;
close all;
% +++++++++++++++++++++++++++++++++++++++++++++++++++++++
% control parameters
ts = 0.2;
% system initial values
%syms Xpfn Xpsn Xcn Xpfo Xpso Xco h delay;
delay = 0.2;
h = 0.2;
Xpfn = 2;
Xpsn = 2;
Xcn = 4;
Xpfo = 3;
Xpso = 3;
Xco = 6;
u = 1;
y = 1;
yp = 1;
%Zn = [0;0;0;0;0;0];
Z = [Xpfn;Xpsn;Xcn;Xpfo;Xpso;Xco];
T = [Xpfn,Xpsn,Xcn,Xpfo,Xpso,Xco];
Zo = Z;
% simulation loop
% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
for k = 1:1000
time(k) = k*ts;
% system paremeters
A = [exp(-0.2*h),0,5*(1-exp(-0.2*(h-delay))),0,0,5*(exp(-0.2*(h-delay))-exp(-0.2*h));5*(1-exp(-0.2*h)),1,5*(h-delay-5*(1-exp(-0.2*(h-delay)))),0,0,5*(delay-5*(exp(-0.2*(h-delay))-exp(-0.2*h)));(-h),(-h),(1-h),0,0,0;1,0,0,0,0,0;0,1,0,0,0,0;0,0,1,0,0,0];
Ar = [exp(-0.2*h),0,5*(1-exp(-0.2*(h-delay))),0,0,5*(exp(-0.2*(h-delay))-exp(-0.2*h));5*(1-exp(-0.2*h)),1,5*(h-delay-5*(1-exp(-0.2*(h-delay)))),0,0,5*(delay-5*(exp(-0.2*(h-delay))-exp(-0.2*h)));0,0,0,0,0,0;1,0,0,0,0,0;0,1,0,0,0,0;0,0,1,0,0,0];
M = T*[1;1;0;0;0;0]*[0,0,0,1,1,0]*Zo;
%Z = Zn;
Zo = Z;
if (M <= 0)
Zr = Ar*Z;
Z = Zr;
u = [0,0,1,0,0,0]*Z;
else
Za = A*Z;
Z = Za;
u = [0,0,1,0,0,0]*Z;
end
T = Z';
yp = [1,1,0,0,0,0]*Z;
%Zn = Z;
a(k)=Z(1);
u = -u;
y = yp
end
% +++++++++++++++++++++++++++++++++++++++++++++++++++++
% Simulation results
figure(3)
plot(time,u,'r','linewidth',2);
xlabel('time(s)');
ylabel('u');
legend('u');
figure(4)
plot(time,y,'r','linewidth',2);
xlabel('time(s)');
ylabel('y');
legend('y');
在计算u和y的值时,它们随着k值的变化而变化,现在我想把u和y随着k的变化画出图,但一直不对。请高手给帮个忙,谢谢。
clc;
clear all;
close all;
% +++++++++++++++++++++++++++++++++++++++++++++++++++++++
% control parameters
ts = 0.2;
% system initial values
%syms Xpfn Xpsn Xcn Xpfo Xpso Xco h delay;
delay = 0.2;
h = 0.2;
Xpfn = 2;
Xpsn = 2;
Xcn = 4;
Xpfo = 3;
Xpso = 3;
Xco = 6;
u = 1;
y = 1;
yp = 1;
%Zn = [0;0;0;0;0;0];
Z = [Xpfn;Xpsn;Xcn;Xpfo;Xpso;Xco];
T = [Xpfn,Xpsn,Xcn,Xpfo,Xpso,Xco];
Zo = Z;
% simulation loop
% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
for k = 1:1000
time(k) = k*ts;
% system paremeters
A = [exp(-0.2*h),0,5*(1-exp(-0.2*(h-delay))),0,0,5*(exp(-0.2*(h-delay))-exp(-0.2*h));5*(1-exp(-0.2*h)),1,5*(h-delay-5*(1-exp(-0.2*(h-delay)))),0,0,5*(delay-5*(exp(-0.2*(h-delay))-exp(-0.2*h)));(-h),(-h),(1-h),0,0,0;1,0,0,0,0,0;0,1,0,0,0,0;0,0,1,0,0,0];
Ar = [exp(-0.2*h),0,5*(1-exp(-0.2*(h-delay))),0,0,5*(exp(-0.2*(h-delay))-exp(-0.2*h));5*(1-exp(-0.2*h)),1,5*(h-delay-5*(1-exp(-0.2*(h-delay)))),0,0,5*(delay-5*(exp(-0.2*(h-delay))-exp(-0.2*h)));0,0,0,0,0,0;1,0,0,0,0,0;0,1,0,0,0,0;0,0,1,0,0,0];
M = T*[1;1;0;0;0;0]*[0,0,0,1,1,0]*Zo;
%Z = Zn;
Zo = Z;
if (M <= 0)
Zr = Ar*Z;
Z = Zr;
u = [0,0,1,0,0,0]*Z;
else
Za = A*Z;
Z = Za;
u = [0,0,1,0,0,0]*Z;
end
T = Z';
yp = [1,1,0,0,0,0]*Z;
%Zn = Z;
a(k)=Z(1);
u = -u;
y = yp
end
% +++++++++++++++++++++++++++++++++++++++++++++++++++++
% Simulation results
figure(3)
plot(time,u,'r','linewidth',2);
xlabel('time(s)');
ylabel('u');
legend('u');
figure(4)
plot(time,y,'r','linewidth',2);
xlabel('time(s)');
ylabel('y');
legend('y');
在计算u和y的值时,它们随着k值的变化而变化,现在我想把u和y随着k的变化画出图,但一直不对。请高手给帮个忙,谢谢。