1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| %%%variable regression estimation%%%
close all;
clear all;
clc
%%%%identification%%%%
teta=[0 0 0 0]';tetatotal=[];ret=[];
p=1000*eye(4);d=1;
load com.mat
u=coma;
for k=1:5
y(k)=0;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
B=[0 0.2 0.02];
A=[1 -0.8 -0.04];
for k=6:105
y(k)=-A(2)*y(k-1)-A(3)*y(k-2)+B(2)*u(k-4)+B(3)*u(k-5);
end
for k=106:206
y(k)=-A(2)*y(k-1)-A(3)*y(k-2)+B(2)*u(k-6)+B(3)*u(k-7);
end
for k=1:3
yr(k)=0;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ET1=[];
ret=[];
E1=0;
%%%%%%%%%%%%%% recherche de retard %%%%%%%%%%%
for k=4:205
fi=[-y(k-1) -y(k-2) u(k-d-1) u(k-d-2)];
ki=p*fi'*inv((0.1+fi*p*fi'));
p=((eye(4)-ki*fi)*p)/0.1;
teta=teta+ki*(y(k)-fi*teta);
yr(k)=-teta(1)*y(k-1)-teta(2)*y(k-2)+teta(3)*u(k-d-1)+teta(4)*u(k-d-2);
ET1=[];
s=1;
while (s<11 & k>s+2)
for i=2+s:k-1
E1=E1+(1/(k-1))*(u(i-s)*(y(i+1)-y(i)));
end
E1=0.1*E1+u(k-s-1)*(y(k)-y(k-1));
ET1=[ET1 E1];
s=s+1;
end
maxx=ET1(1);
for i=1:length(ET1)
if (ET1(i)>maxx)
maxx=ET1(i);
d=i;
end
end
ret=[ret d];
end
figure(2)
plot(ret)
figure(1)
plot(yr); hold on
plot(y,'-r') |
Partager