¡Esperando en línea! ! ! La programación de MATLAB utiliza el método de mínimos cuadrados generalizado para la identificación del sistema
Publicar un párrafo para ti
borrar todo;
cerrar todo;
clc;
% M construcción de matriz
Np=15;r=4;
X1=1;X2=1;X3=1;X4=1;
m_length = r *Np;
a=1;
para i=1:1:m_length
Y4=X4;Y3=X3;Y2=X2;Y1= X1;
X4=Y3;X3=Y2;X2=Y1;
X1=xor(Y3,Y4);
si Y4==0
M(i)=-a;
else
M(i)=a;
fin
fin
figura;
i=1:1:m_length;
plot(i,M);
% ruido blanco
ruido = ceros(1,m_length);
for i=1:1:m_length
temp = ruido + 0,5*rands(1,m_length) ;
ruido = temp;
fin
ruido = ruido/12;
%ruido = temp;
% parámetro del sistema
n=2;d=1;a1=-1;a2=0.5;b1=1;b2=0.5;
S_U0=0.2;S_Y0 =0.2;
% genera u,y
u0=ones(1,m_length)*S_U0;
U = M + u0 + ruido; p>
figura;
i=1:1:m_length;
trama(i,U);
%formulación
y(1)=0;y(2)=0;y(3)=0;
Y(1)=S_Yy(1)+ruido(1);Y(2 )=S_Yy(2)+ruido(2);Y(3)=S_Yy(3) +ruido(3);
para k=4:m_length
y(k) = b1*U(k-1-d)+b2*U(k-2-d)-a1*y(k-1)-a2*y(k-2);
Y(k)=S_Yy(k)+ruido(k);
final
figura;
i=1:1: m_length;
plot(i,Y);
% identificación
% valor preliminar
c=2;
P = (c^3)*ojo(3*n+d);
sita(:,3) = ';
alf = 0.995;
% M
%calcular U0,Y0
sum_U = 0;sum_Y = 0;
para k=1:1:m_length p>
suma_U = suma_U + U(k);
suma_Y = suma_Y + Y(k);
fin
t_U0 = suma_U/m_longitud ;t
_Y0 = suma_Y/m_longitud;
para k=1:1:m_longitud
t_u(k) = U(k) - t_U0;
t_y(k ) = Y(k) - t_Y0;
fin
figura;
i=1:1:m_length;
trama( i,t_u);
figura;
i=1:1:m_length;
trama(i,t_y);
v(1)=0;v(2)=0;v(3)=0;
for k=4:1:m_length
fai = [-t_y(k -1),-t_y(k-2),t_u(k-1-d),t_u(k-2-d),v(k-1),v(k-2),v(k-3) ]';
v(k) = t_y(k) - fai'*sita(:,k-1);
W = P*fai;
dan = 1/(alf + fai'*W);
sita(:,k) = sita(:,k-1) + dan*W*v(k);
P = ( P - dan * W*W')/alf;
fin
figura;
i = 3:1:m_length ;
plot(i,sita(1,3:m_longitud),'r',i,sita(2,3:m_longitud),'g',i,sita(3,3:m_longitud) ,'b',i,sita(4,3:m_longitud),'y',i,sita(5,3:m_longitud),'m',i,sita(6,3:m_longitud),'c', i,sita(7,3:m_length),'k');