Beruflich Dokumente
Kultur Dokumente
IDENTIFICAO DE SISTEMAS
(3 Lista de Exerccios)
Joo Pessoa
Maro 2015
y (t ) a1 y (t 1) b0 u (t 1)
a
y (t ) y (t 1) u (t 1) 1 T
b0
utilizando o estimador dos mnimos quadrados (procedimento off-line). As medidas de entrada e
sada so (estes dados sero armazenados no Matlab e depois utilizados no cdigo que ser
desenvolvido):
t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
y(t)
0
0.239
-0.486
0.159
0.194
0.0039
0.0067
-0.315
0.196
-0.452
0.366
-0.261
-0.077
-0.212
u(t)
1.197
-1.830
-0.420
-0.5721
-0.287
0.435
-1.404
0.193
-1.771
0.701
-0.389
-1.040
-1.256
0.966
Para N amostras
T 1
y1
T
y
2 2 a1 Y
M b0
M
T
N
y N
O estimador dos mnimos quadrados dado pela seguinte equao:
TY
a1 = 0.4115
b0 = 0.1871
Comparao da resposta real e a estimada
0.4
resposta real
resposta estimada
0.3
0.2
0.1
0
-0.1
-0.2
-0.3
-0.4
-0.5
10
12
14
b0 z 1
y( z)
y ( z ) a1 z y ( z ) b0 z u ( z )
u ( z ) 1 a1 z 1
1
0,1871z 1
G ( z )
1 0, 4115 z 1
y (t ) b0u (t ) b1u (t 1)
b
y (t ) u (t ) u (t 1) 0 T
b1
onde as seguintes medidas foram obtidas (estes dados sero armazenados no Matlab e depois
utilizados no cdigo que ser desenvolvido):
t
0
1
2
3
4
5
6
7
8
9
10
y(t)
0
1
-1
1
1
1
-1
-1
0
0
0
u(t)
0
1.1
-0.2
0.1
0.9
1
0.1
-1.1
-0.8
-0.1
0
Para N amostras
T 1
y1
T
y
2 2 b0 Y
M b1
M
T
y N
N
O estimador dos mnimos quadrados dado pela seguinte equao:
TY
theta=(inv(fi'*fi))*fi'*Y;
b0=theta(1)
b1=theta(2)
t=[1:11];
figure(1)
plot(t,u)
figure(2)
plot(t,y)
for t=2:1:n
yest=fi*theta;
end
t=2:1:n;
figure(3)
plot(t,Y,t,yest')
b0 = 0.6143
b1 = 0.5143
Comparao da resposta real e a estimada
1.5
resposta real
resposta estimada
1
0.5
-0.5
-1
-1.5
10
11
b
0, 6143
0
0,5143
b1
0,5 z 1
Y ( z)
Gp ( z)
1
1
(1 0,5 z )(1 0,5 z ) U ( z )
Logo
Y ( z)
0,5 z 1
U ( z ) 1 0, 6 z 1 0, 05 z 2
y ( k ) 0, 6 y (k 1) 0, 05 y ( k 2) 0,5u (k 1) equao de diferenas do processo
- Utilizando o Matlab
%Exerccio 5.5 do livro do Coelho
clear all
close all
clc
t1=0:0.5:12;
ur=t1;
%rampa
us=sin(t1*pi/5);
%senide
for j=1:1:3
ud(j)=1;
%degrau
yd(j)=0;
yr(j)=0;
ys(j)=0;
end
for j=3:1:25
ud(j)=1;
%degrau
yd(j)=0.6*yd(j-1)-0.05*yd(j-2)+0.5*ud(j-1);
yr(j)=0.6*yr(j-1)-0.05*yr(j-2)+0.5*ur(j-1);
ys(j)=0.6*ys(j-1)-0.05*ys(j-2)+0.5*us(j-1);
end
t2=1:1:25;
%Figuras das respostas a cada entrada
figure(1)
subplot(121);plot(t2,ud);title('Degrau')
subplot(122);plot(t2,yd);title('Resposta devido ao degrau')
figure(2)
subplot(121);plot(t1,ur);title('Rampa')
subplot(122);plot(t1,yr);title('Resposta devido a rampa')
figure(3)
subplot(121);plot(t1,us);title('Sinal senoidal')
subplot(122);plot(t1,ys);title('Resposta devido ao sinal senoidal')
%MQ para cada entrada
Yd=[];Yr=[];Ys=[];
fid=[];fir=[];fis=[];
for k=3:1:20;
Yd=[Yd;yd(k)];Yr=[Yr;yr(k)];Ys=[Ys;ys(k)];
fid=[fid;yd(k-1) ud(k-1)];fir=[fir;yr(k-1) ur(k-1)];fis=[fis;ys(k-1) us(k-1)];
end
tetad=inv(fid'*fid)*fid'*Yd;tetar=inv(fir'*fir)*fir'*Yr;tetas=inv(fis'*fis)*fis'*Ys;
a1_d=tetad(1)
b0_d=tetad(2)
a1_r=tetar(1)
b0_r=tetar(2)
a1_s=tetas(1)
b0_s=tetas(2)
for t=2:1:20
yestd=fid*tetad;
yestr=fir*tetar;
yests=fis*tetas;
end
%Matrizes de covarincia
p_d=inv(fid'*fid)
p_r=inv(fir'*fir)
p_s=inv(fis'*fis)
a1_d =
5.399968404755433e-001
b0_d =
5.128974535139698e-001
a1_r =
5.308566041799027e-001
b0_r =
5.220647986267659e-001
a1_s =
5.332686168665950e-001
b0_s =
5.238393141206926e-001
p_d =
6.984969973760109e-001
-6.850831589986276e-001
p_r =
2.661298664253226e-001
-2.457130719966514e-001
p_s =
4.065680054574111e-001
-3.370515678749010e-001
-6.850831589986276e-001
7.274824736477847e-001
-2.457130719966514e-001
2.287592346597027e-001
-3.370515678749010e-001
3.803854185780419e-001
Degrau
1.4
1.8
1.2
1.6
1
1.4
1.2
0.8
1
0.6
0.8
0.6
0.4
0.4
0.2
0.2
0
10
20
30
10
20
30
12
14
12
10
10
8
6
6
4
10
15
10
15
Sinal senoidal
0.8
1
0.6
0.4
0.5
0.2
0
-0.2
-0.5
-0.4
-0.6
-1
-0.8
-1
10
15
-1.5
10
15
a
0,540
d 1d
0,513
b0 d
Vetor de parmetros estimados para entrada rampa
a
0, 531
r 1r
0,522
b0 r
Vetor de parmetros estimados para o sinal senoidal
a
0,533
s 1s
0,524
b0 s
Para comparar os parmetros estimados podemos verificar o tamanho dos elementos da matriz
de covarincia de cada entrada. A matriz de covarincia definida como:
P (t ) [ T (t ) (t )]1
Matriz de covarincia para entrada degrau
0, 698 0, 685
0, 685 0, 727
Pd (t )
0, 266 0, 246
0, 246 0, 229
Pr (t )
0, 407 0,337
0,337 0,380
Ps (t )
Verifica-se que os elementos da matriz de covarincia para entrada rampa tm menor magnitude
consequentemente os parmetros estimados para o sinal rampa so os de maior preciso.
10
A( z 1 ) y (t ) z d B ( z 1 )u (t ) e(t )
onde
A( z 1 ) 1 1,5 z 1 0, 7 z 2
B ( z 1 ) 1 0,5 z 1
d 1
e sendo e(t) um sinal rudo branco com mdia 0 (zero) e desvio padro 0.01. Seja u(t) uma
sequencia N(0,1) ou PRBS com amplitude 1.
- Primeiro caso (na,nb) = (1,0):
media_e=mean(e)
variancia_e=var(e)
figure(2)
plot(e)
%MQR
np=2;
% numero de parametros
p=1000*eye(np,np); % condies iniciais
teta=zeros(np,1); %
for t=1:3
y(t)=0;
a1(t)=teta(1);
b0(t)=teta(2);
erro(t)=0.0;
erroq(t)=0.0;
erro1(t)=0.0;
erroqm(t)=0.0;
end
for t=4:1:N
y(t)=1.5*y(t-1)+u(t-1)+e(t);
fi=[-y(t-1);u(t-1)];
erro(t)=y(t)-fi'*teta;
% erro de estimao
K=p*fi/(1+fi'*p*fi);
% ganho do estimador
teta=teta+K*erro(t);
% vetor de parmetros
p=(p-K*fi'*p);
% matriz de covarincia
a1(t)=teta(1);
b0(t)=teta(2);
yest(t)=fi'*teta;
erroq(t)=erro(t)*erro(t);
erroqt(t)=erroq(t-1)+erroq(t);
ybarra=mean(y);
erro1(t)=(y(t)-ybarra);
erroqm(t)=erro1(t)*erro1(t);
erroqmt(t)=erroqm(t-1)+erroqm(t);
end
SEQ=sum(erroq)
% somatorio do erro quadratico
R2=1-(SEQ/sum(erroqm))
% coeficiente de correlaao multipla
t=1:1:N;
figure(3)
subplot(121),plot(t,a1(t)),title('a1'),xlabel('amostras');
subplot(122),plot(t,b0(t)),title('b0'),xlabel('amostras');
- Sinal de entrada PRBS de amplitude 1:
12
1.5
0.5
-0.5
-1
-1.5
10
20
30
40
50
60
70
80
90
100
10
20
30
40
50
60
70
80
90
100
- Parmetros estimados:
a1
b0
1.4
-0.2
1.2
-0.4
-0.6
0.8
-0.8
0.6
-1
0.4
-1.2
0.2
-1.4
-1.6
50
amostras
100
50
amostras
100
Verifica-se que os parmetros estimados chegaram ao valor dos parmetros do modelo definido
na simulao de y
SEQ = 7,251365872463060 (somatrio do erro quadrtico)
13
14
a1
b0
1.4
-0.2
0.7
1.2
-0.4
0.6
-0.6
0.5
0.8
-0.8
0.4
0.6
-1
0.3
0.4
-1.2
0.2
0.2
-1.4
-1.6
b1
0.8
50
amostras
100
0.1
50
amostras
100
50
amostras
100
(1 1,5 z 1 0, 7 z 2 ) y (t ) z 1u (t ) e(t )
y (k ) 1,5 y ( k 1) 0, 7 y ( k 2) u (k 1) e(k )
O programa semelhante ao dos outros casos
- Parmetros estimados
a1
a2
0.7
-0.2
-0.4
-0.6
b0
1.4
0.6
1.2
0.5
0.4
0.8
0.3
0.6
0.2
0.4
0.1
0.2
-0.8
-1
-1.2
-1.4
-1.6
50
amostras
100
50
amostras
100
50
amostras
100
0
-0.5
0.6
-1
0.4
-1.5
0.2
-2
1.5
50
amostras
b0
a2
0.8
100
50
amostras
b1
100
50
amostras
100
0.8
0.6
0.4
0.5
0
0.2
0
50
amostras
100
16
5.8
i) Gerando e salvando o sinal de entrada (PRBS 1) e o rudo (mdia 0 e desvio padro 0,01)
%Gerando um PRBS com amplitude +-1
i=1;
for t1_prbs=0:0.01:0.99
u1(i)=0;
t_prbs(i)=t1_prbs;
i=i+1;
end
for t_prbs=1:1:length(u1);
if rand>0.5;
u2(t_prbs)=1;
else
u2(t_prbs)=-1;
end
u(t_prbs)=u1(t_prbs)+u2(t_prbs);
if u(t_prbs)==0;
u(t_prbs)=u2(t_prbs);
else
end
end
t_prbs=0:0.01:0.99;
figure(1)
plot(t_prbs,u),axis([0 1 -1.5 1.5])
%Gerando o rudo branco com desvio padro igual a 0.01
N=100;
e=0.01*randn(N,1);
media_e=mean(e)
variancia_e=var(e)
figure(2)
plot(e)
aa=[u' e];
save sinais.dat aa ascii
- Sinal de entrada PRBS
17
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0
10
20
30
40
50
60
70
80
90
100
10
20
30
40
50
60
70
80
90
100
- Rudo
0.03
0.02
0.01
-0.01
-0.02
-0.03
18
t=1:1:N;
figure(1)
plot(t,u);axis([0 N -1.2 1.2])
figure(2)
plot(e)
%parmetro variante b0r
for t1=1:1:100
if t1>=0 & t1<=20
b0r(t1)=2;
elseif t1>=21 & t1<=40
b0r(t1)=3;
elseif t1>=41 & t1<=60
b0r(t1)=2;
elseif t1>=61 & t1<=80
b0r(t1)=3;
else
b0r(t1)=2;
end
end
t1=1:1:100;
figure(3)
plot(t1,b0r),axis([0 100 1.8 3.2])
%MQR
np=2;
% numero de parametros
p=1000*eye(np,np); % condies iniciais
teta=zeros(np,1); %
lamb=1;
% fator de esquecimento
for t=1
y(t)=0;
a1(t)=teta(1);
b0(t)=teta(2);
erro(t)=0.0;
erroq(t)=0.0;
erro1(t)=0.0;
erroqm(t)=0.0;
end
for t=2:1:N
y(t)=0.8*y(t-1)+b0r(t)*u(t-1)+e(t);
fi=[-y(t-1);u(t-1)];
erro(t)=y(t)-fi'*teta;
% erro de estimao
K=p*fi/(lamb+fi'*p*fi);
% ganho do estimador
teta=teta+K*erro(t);
% vetor de parmetros
p=(1/lamb)*(p-K*fi'*p);
% matriz de covarincia
a1(t)=teta(1);
b0(t)=teta(2);
yest(t)=fi'*teta;
erroq(t)=erro(t)*erro(t);
erroqt(t)=erroq(t-1)+erroq(t);
ybarra=mean(y);
erro1(t)=(y(t)-ybarra);
erroqm(t)=erro1(t)*erro1(t);
erroqmt(t)=erroqm(t-1)+erroqm(t);
end
19
SEQ=sum(erroq)
% somatorio do erro quadratico
R2=1-(SEQ/sum(erroqm))
% coeficiente de correlaao multipla
t=1:1:N;
figure(4)
subplot(121),plot(t,a1(t)),title('a1'),xlabel('amostras');
subplot(122),plot(t,b0(t)),title('b0'),xlabel('amostras');
- Para fator de esquecimento =1
- Parmetros estimados =1
a1
b0
-0.1
2.5
-0.2
-0.3
-0.4
1.5
-0.5
-0.6
-0.7
0.5
-0.8
-0.9
20
40
60
amostras
80
100
20
40
60
amostras
80
100
SEQ = 3.162474068501219e+001
R2 = 9.814097045064584e-001
- Para fator de esquecimento =0,9
- Parmetros estimados com =0,9
20
a1
b0
-0.1
2.5
-0.2
-0.3
-0.4
1.5
-0.5
-0.6
-0.7
0.5
-0.8
-0.9
20
40
60
amostras
80
100
20
40
60
amostras
80
100
SEQ = 2.543722088631948e+001
R2 = 9.850469776963173e-001
Para o caso considerando fator de esquecimento igual a 0,9 a soma dos erros quadrticos
menor e o coeficiente de correlao mltipla maior. Portanto os parmetros estimados com
=0,9 so melhores.
ii)
Estimao dos parmetros usando random walk
clear all
close all
format long e
clc
load sinais.dat
u=sinais(:,1);
e=sinais(:,2);
N=length(u);
%parmetro variante b0r
for t1=1:1:100
if t1>=0 & t1<=20
b0r(t1)=2;
elseif t1>=21 & t1<=40
b0r(t1)=3;
elseif t1>=41 & t1<=60
b0r(t1)=2;
elseif t1>=61 & t1<=80
b0r(t1)=3;
else
b0r(t1)=2;
21
end
end
t1=1:1:100;
figure(7)
plot(t1,b0r),axis([0 100 1.8 3.2])
%MQR
np=2;
% numero de parametros
p=1000*eye(np,np); % condies iniciais
teta=zeros(np,1); %
lamb=1;
% fator de esquecimento
Q=diag([0 0.05]); % matiz Q usada n mtodo randow walk
for t=1
y(t)=0;
a1(t)=teta(1);
b0(t)=teta(2);
erro(t)=0.0;
erroq(t)=0.0;
erro1(t)=0.0;
erroqm(t)=0.0;
end
for t=2:1:N
y(t)=0.8*y(t-1)+b0r(t)*u(t-1)+e(t);
fi=[-y(t-1);u(t-1)];
erro(t)=y(t)-fi'*teta;
% erro de estimao
K=p*fi/(lamb+fi'*p*fi);
% ganho do estimador
teta=teta+K*erro(t);
% vetor de parmetros
p=(1/lamb)*(p-K*fi'*p)+Q;
% matriz de covarincia
a1(t)=teta(1);
b0(t)=teta(2);
yest(t)=fi'*teta;
erroq(t)=erro(t)*erro(t);
erroqt(t)=erroq(t-1)+erroq(t);
ybarra=mean(y);
erro1(t)=(y(t)-ybarra);
erroqm(t)=erro1(t)*erro1(t);
erroqmt(t)=erroqm(t-1)+erroqm(t);
end
SEQ=sum(erroq)
% somatorio do erro quadratico
R2=1-(SEQ/sum(erroqm))
% coeficiente de correlaao multipla
t=1:1:N;
figure(4)
subplot(121),plot(t,a1(t)),title('a1'),xlabel('amostras');
subplot(122),plot(t,b0(t)),title('b0'),xlabel('amostras');
-Parmetros estimados com random walk
22
a1
b0
-0.1
2.5
-0.2
-0.3
-0.4
1.5
-0.5
-0.6
-0.7
0.5
-0.8
-0.9
20
40
60
amostras
80
100
20
40
60
amostras
80
100
SEQ = 1.764611361638944e+001
R2 = 9.896269041473356e-001
Usando o random walk melhoramos os parmetros estimados, pois foi observado a diminuio
da soma dos erros quadrticos e o aumento do coeficiente de correlao mltipla em relao ao
processo de estimao usando o fator de esquecimento igual a 0,9.
23
0.5
-0.5
-1
-1.5
100
200
300
400
500
600
700
800
900
1000
24
- Rudo
3
2
1
0
-1
-2
-3
-4
100
200
300
400
500
600
700
800
900
1000
25
erro(t)=y(t)-fi'*teta;
% erro de estimao
K=p*fi/(lamb+fi'*p*fi);
% ganho do estimador
teta=teta+K*erro(t);
% vetor de parmetros
p=(1/lamb)*(p-K*fi'*p);
% matriz de covarincia
a1(t)=teta(1);
a2(t)=teta(2);
yest(t)=fi'*teta;
erroq(t)=erro(t)*erro(t);
erroqt(t)=erroq(t-1)+erroq(t);
ybarra=mean(y);
erro1(t)=(y(t)-ybarra);
erroqm(t)=erro1(t)*erro1(t);
erroqmt(t)=erroqm(t-1)+erroqm(t);
end
SEQ=sum(erroq)
% somatorio do erro quadratico
R2=1-(SEQ/sum(erroqm))
% coeficiente de correlaao multipla
t=1:1:N;
figure(1)
subplot(121),plot(t,a1(t)),title('a1'),xlabel('amostras');
subplot(122),plot(t,a2(t)),title('a2'),xlabel('amostras');
figure(2)
plot(t,y,t,yest),title('Comparao da sada estimada e real')
- Parmetros estimados usando MQR padro
a1
1.5
a2
2.5
0.5
2
0
1.5
-0.5
1
-1
0.5
-1.5
-2
200
400
600
amostras
800
1000
200
400
600
amostras
800
1000
SEQ = 1.000474433151930e+003
R2 = 9.474966798522828e-001
i)
26
close all
format long e
clc
load sinais58.dat
u=sinais58(:,1);
e=sinais58(:,2);
N=length(u);
t=1:1:N;
%Algoritmo de estimao estocstica
np=2;
% numero de parametros
p=10*eye(np,np); % condies iniciais
teta=zeros(np,1); %
alfa=0.1;
% coeficientes de gama
beta=1;
%
for t=1:2
y(t)=0;
a1(t)=teta(1);
a2(t)=teta(2);
erro(t)=0.0;
erroq(t)=0.0;
erro1(t)=0.0;
erroqm(t)=0.0;
end
for t=3:1:N
y(t)=1.5*y(t-1)-0.56*y(t-2)+e(t);
fi=[-y(t-1);-y(t-2)];
erro(t)=y(t)-fi'*teta;
% erro de estimao
gama=alfa/(beta+fi'*fi);
% ajuste de ganho
teta=teta+gama*fi*erro(t);
% vetor de parmetros
a1(t)=teta(1);
a2(t)=teta(2);
yest(t)=fi'*teta;
erroq(t)=erro(t)*erro(t);
erroqt(t)=erroq(t-1)+erroq(t);
ybarra=mean(y);
erro1(t)=(y(t)-ybarra);
erroqm(t)=erro1(t)*erro1(t);
erroqmt(t)=erroqm(t-1)+erroqm(t);
end
SEQ=sum(erroq)
% somatorio do erro quadratico
R2=1-(SEQ/sum(erroqm))
% coeficiente de correlaao multipla
t=1:1:N;
figure(1)
subplot(121),plot(t,a1(t)),title('a1'),xlabel('amostras');
subplot(122),plot(t,a2(t)),title('a2'),xlabel('amostras');
27
- Para (,)=(0.1,1)
Parmetros estimados (,)=(0.1,1)
a1
0.2
0.7
-0.2
0.6
-0.4
0.5
-0.6
0.4
-0.8
0.3
-1
0.2
-1.2
0.1
-1.4
-1.6
-0.1
-1.8
200
400
600
amostras
a2
0.8
800
1000
-0.2
200
400
600
amostras
800
1000
SEQ = 1.363879528035444e+003
R2 = 9.284257536919106e-001
- Para (,)=(0.01,1)
Parmetros estimados (,)=(0.01,1)
28
a1
0.2
0.05
-0.2
-0.4
-0.05
-0.6
-0.1
-0.8
-0.15
-1
-0.2
-1.2
200
400
600
amostras
a2
0.1
800
1000
-0.25
200
400
600
amostras
800
1000
SEQ = 3.396849128627693e+003
R2 = 8.217387157691108e-001
Comparando o somatrio dos erros quadrticos ou o coeficiente de correlao mltipla
verificamos que para a estimao usando o algoritmo da aproximao estocstica de seqncia
ganho com aprendizado seqencial os melhores parmetros estimados so para =0,1 e =1. E
comparando este mtodo com o de estimao dos MQR padro verificamos que a melhor
estimativa dos parmetros so para a usando os MQR padro.
ii)
Para =0,005
Parmetros estimados =0,005
29
a1
0.2
a2
0.6
0.4
-0.2
0.2
-0.4
-0.6
-0.8
-0.2
-1
-0.4
-1.2
-0.6
-1.4
-1.6
200
400
600
amostras
800
1000
-0.8
200
400
600
amostras
800
1000
SEQ = 1.383216070498292e+003
R2 = 9.274110024440667e-001
- Para =0,01
Parmetros estimados =0,01
a1
0.5
-0.5
0.5
-1
-1.5
-0.5
-2
200
400
600
amostras
a2
1.5
800
1000
-1
200
400
600
amostras
800
1000
SEQ = 2.595184749121822e+003
30
R2 = 8.638087978956633e-001
Comparando o somatrio dos erros quadrticos ou o coeficiente de correlao mltipla
verificamos que para a estimao usando o algoritmo da aproximao estocstica de seqncia
ganho escalar os melhores parmetros estimados so para =0,005.
iii)
Estimao usando o algoritmo da aproximao estocstica ajustando pelo vetor total de
medidas.
clear all
close all
format long e
clc
load sinais58.dat
u=sinais58(:,1);
e=sinais58(:,2);
N=length(u);
t=1:1:N;
figure(1)
plot(t,u);axis([0 N -1.2 1.2])
figure(2)
plot(e)
y(1:2)=0;
for t=3:N
y(t)=1.5*y(t-1)-0.56*y(t-2)+e(t);
end
%Algoritmo de estimao estocstica
np=2;
% numero de parametros
p=10*eye(np);
% condies iniciais
teta=zeros(np,1); %
r=zeros(np);
%
for t=1:5
a1(t)=teta(1);
a2(t)=teta(2);
erro(t)=0.0;
erroq(t)=0.0;
erro1(t)=0.0;
erroqm(t)=0.0;
end
for t=6:1:N
fi=[-y(t-1);-y(t-2)];
erro(t)=y(t)-fi'*teta;
% erro de estimao
r=r+(abs(fi)*abs(fi)');
teta=teta+inv(r)*fi*erro(t);
% vetor de parmetros
a1(t)=teta(1);
a2(t)=teta(2);
yest(t)=fi'*teta;
erroq(t)=erro(t)*erro(t);
31
erroqt(t)=erroq(t-1)+erroq(t);
ybarra=mean(y);
erro1(t)=(y(t)-ybarra);
erroqm(t)=erro1(t)*erro1(t);
erroqmt(t)=erroqm(t-1)+erroqm(t);
end
SEQ=sum(erroq)
% somatorio do erro quadratico
R2=1-(SEQ/sum(erroqm))
% coeficiente de correlaao multipla
t=1:1:N;
figure(4)
subplot(121),plot(t,a1(t)),title('a1'),xlabel('amostras');
subplot(122),plot(t,a2(t)),title('a2'),xlabel('amostras');
figure(5)
plot(t,y,t,yest),title('Comparao da sada estimada e real')
Parmetros estimados ajustando pelo vetor total de medidas.
a1
a2
-0.5
-1
2
-1.5
1
-2
0
-2.5
-1
-3
-2
-3.5
-4
200
400
600
amostras
800
1000
-3
200
400
600
amostras
800
1000
SEQ = 1.063217182575651e+003
R2 = 9.445655959909940e-001
Comparando o somatrio dos erros quadrticos ou o coeficiente de correlao mltipla
verificamos que para a estimao usando o algoritmo da aproximao estocstica ajustando
pelo vetor total de medidas mostrou-se melhor que os mtodos utilizados em i) e ii), porm os
parmetros estimados pelo mtodo dos MQR padro ainda so melhores.
32
- Parmetros Estimados:
a1 = -1.8063
a2 = 0.8147
b0 = 0.0531
- Comparao (Resposta Real x Estimada):
33
34
rue1(j)=u(j)*erro(j);
end
SEQ=sum(erroq)
% somatrio do erro quadrtico
R2=1-(SEQ/sum(erroqm))
% coeficiente de correlao
mltipla
rue=(1/n)*sum(rue1)
% correlao cruzada entre os
sinais de entrada e erro de previso
t=1:1:n;
figure(1)
plot(t,y(t),t,yest(t)),title('Comparao da sada real e a estimada')
figure(2)
plot(t,erro(t)),title('Erro de estimao')
- Erro de Estimao:
35
% numero de parametros
% condies iniciais
%
% fator de esquecimento
36
for j=1:2
y(j)=0;
yest(j)=0;
erro(j)=0.0;
erroq(j)=0.0;
erro1(j)=0.0;
erroqm(j)=0.0;
rue1(j)=0;
end
for j=3:1:n
fi=[-y(j-1);u(j)];
erro(j)=y(j)-fi'*teta;
% erro de estimao
K=p*fi/(lamb+fi'*p*fi);
% ganho do estimador
teta=teta+K*erro(j);
% vetor de parmetros
p=(1/lamb)*(p-K*fi'*p);
% matriz de covarincia
yest(j)=fi'*teta;
erroq(j)=erro(j)*erro(j);
erroqt(j)=erroq(j-1)+erroq(j);
ybarra=mean(y);
erro1(j)=(y(j)-ybarra);
erroqm(j)=erro1(j)*erro1(j);
rue1(j)=u(j)*erro(j);
end
SEQ=sum(erroq)
% somatrio do erro quadrtico
R2=1-(SEQ/sum(erroqm))
% coeficiente de correlao
mltipla
rue=(1/n)*sum(rue1)
% correlao cruzada entre os
sinais de entrada e erro de previso
t=1:1:n;
figure(1)
plot(t,y(t),t,yest(t)),title('Comparao da sada real e a estimada')
figure(2)
plot(t,erro(t)),title('Erro de estimao')
0.0138
37
0.9766
38
-0.0066
0.9923
% numero de parametros
% condies iniciais
%
% fator de esquecimento
39
fi=[-y(j-1);-y(j-2);-y(j-3);u(j);u(j-1)];
erro(j)=y(j)-fi'*teta;
% erro de estimao
K=p*fi/(lamb+fi'*p*fi);
% ganho do estimador
teta=teta+K*erro(j);
% vetor de parmetros
p=(1/lamb)*(p-K*fi'*p);
% matriz de covarincia
yest(j)=fi'*teta;
erroq(j)=erro(j)*erro(j);
erroqt(j)=erroq(j-1)+erroq(j);
ybarra=mean(y);
erro1(j)=(y(j)-ybarra);
erroqm(j)=erro1(j)*erro1(j);
rue1(j)=u(j)*erro(j);
end
SEQ=sum(erroq)
% somatrio do erro quadrtico
R2=1-(SEQ/sum(erroqm))
% coeficiente de correlao
mltipla
rue=(1/n)*sum(rue1)
% correlao cruzada entre os
sinais de entrada e erro de previso
t=1:1:n;
figure(1)
plot(t,y(t),t,yest(t)),title('Comparao da sada real e a estimada')
figure(2)
plot(t,erro(t)),title('Erro de estimao')
-0.0030
0.9929
40
41
-0.0032
0.9910
% numero de parametros
% condies iniciais
%
% fator de esquecimento
42
for j=6:1:n
fi=[-y(j-1);-y(j-2);-y(j-3);-y(j-4);-y(j-5);u(j);u(j-1)];
erro(j)=y(j)-fi'*teta;
% erro de estimao
K=p*fi/(lamb+fi'*p*fi);
% ganho do estimador
teta=teta+K*erro(j);
% vetor de parmetros
p=(1/lamb)*(p-K*fi'*p);
% matriz de covarincia
yest(j)=fi'*teta;
erroq(j)=erro(j)*erro(j);
erroqt(j)=erroq(j-1)+erroq(j);
ybarra=mean(y);
erro1(j)=(y(j)-ybarra);
erroqm(j)=erro1(j)*erro1(j);
rue1(j)=u(j)*erro(j);
end
SEQ=sum(erroq)
% somatrio do erro quadrtico
R2=1-(SEQ/sum(erroqm))
% coeficiente de correlao
mltipla
rue=(1/n)*sum(rue1)
% correlao cruzada entre os
sinais de entrada e erro de previso
t=1:1:n;
figure(1)
plot(t,y(t),t,yest(t)),title('Comparao da sada real e a estimada')
figure(2)
plot(t,erro(t)),title('Erro de estimao')
-0.0032
0.9759
43
44
-0.0030
0.9423
% numero de parametros
% condies iniciais
%
% fator de esquecimento
45
a2(j)=0;
b0(j)=0;
b1(j)=0;
erro(j)=0.0;
erroq(j)=0.0;
erro1(j)=0.0;
erroqm(j)=0.0;
rue1(j)=0;
end
for j=3:1:n
fi=[-y(j-1);-y(j-2);u(j-1);u(j-2)];
erro(j)=y(j)-fi'*teta;
% erro de estimao
K=p*fi/(lamb+fi'*p*fi);
% ganho do estimador
teta=teta+K*erro(j);
% vetor de parmetros
p=(1/lamb)*(p-K*fi'*p);
% matriz de covarincia
a1(j)=teta(1);
a2(j)=teta(2);
b0(j)=teta(3);
b1(j)=teta(4);
yest(j)=fi'*teta;
erroq(j)=erro(j)*erro(j);
erroqt(j)=erroq(j-1)+erroq(j);
ybarra=mean(y);
erro1(j)=(y(j)-ybarra);
erroqm(j)=erro1(j)*erro1(j);
rue1(j)=u(j)*erro(j);
end
SEQ=sum(erroq)
% somatrio do erro quadrtico
R2=1-(SEQ/sum(erroqm))
% coeficiente de correlao
mltipla
rue=(1/n)*sum(rue1)
% correlao cruzada entre os
sinais de entrada e erro de previso
t=1:1:n;
figure(1)
plot(t,y(t),t,yest(t)),title('Comparao da sada real e a estimada')
figure(2)
plot(t,erro(t)),title('Erro de estimao')
figure(3)
subplot(221),plot(t,a1(t)),title('a1'),xlabel('amostras');
subplot(222),plot(t,a2(t)),title('a2'),xlabel('amostras');
subplot(223),plot(t,a1(t)),title('b0'),xlabel('amostras');
subplot(224),plot(t,a2(t)),title('b1'),xlabel('amostras');
46
47
48
erroq(j)=erro(j)*erro(j);
erroqt(j)=erroq(j-1)+erroq(j);
ybarra=mean(y);
erro1(j)=(y(j)-ybarra);
erroqm(j)=erro1(j)*erro1(j);
rue1(j)=u(j)*erro(j);
end
SEQ=sum(erroq)
% somatrio do erro quadrtico
R2=1-(SEQ/sum(erroqm))
% coeficiente de correlao
mltipla
rue=(1/n)*sum(rue1)
% correlao cruzada entre os
sinais de entrada e erro de previso
t=1:1:n;
figure(1)
plot(t,y(t),t,yest(t)),title('Comparao da sada real e a estimada')
figure(2)
plot(t,erro(t)),title('Erro de estimao')
figure(3)
subplot(221),plot(t,a1(t)),title('a1'),xlabel('amostras');
subplot(222),plot(t,a2(t)),title('a2'),xlabel('amostras');
subplot(223),plot(t,a1(t)),title('b0'),xlabel('amostras');
subplot(224),plot(t,a2(t)),title('b1'),xlabel('amostras');
49
50