1 pièce(s) jointe(s)
methode de variable regression estiamtion
bonjour ,
je veux identifier le retard en se basant sur la methode de "variable regression estimation ;cette methode se base sur le critere suivant
E(t,d)= (1/t )*somme de j=0:t[u(j-d)(y(j+1)-y(j))]
Retrouver de nouveau la valeur de E tel que
E(t+1,d)=λE(t,d)+u(t-d)*[y(t+1)-y(t) ]
Estimer le retard d ̂ correspond au maximum de E.
E(t+1,d ̂ )=max[E(t+1,d) ],∀d ϵ [d_min ,d_max]
dans ce cas j'ai pri d=3 pour un premier intervalle et d=4 pour le deuscieme
le probleme que les resultat obtenu est que le retard ne stabilise pas au niveau de ces deux valeurs
Code:
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') |