% arx рекурсивная функция для аппроксимации модели некоторых известных данных, которые даны в файле iddata. Чтобы не использовать сложное исчисление, я использовал также рекурсивную формулу, чтобы найти обратную матрицу P
function [ theta ] = recurs( id, na, nb, theta0, Pinv0 )
N=na+nb;
theta=zeros(N, na+nb);
y=id.Y;
u=id.U;
W=zeros(N);
Pinv=zeros(N);
E=zeros(N);
phi=[];
for k=1:N
phi1= zeros(na, 1);
phi2= zeros(nb, 1);
for i= 1 : na
if (k-i)<=0
phi1(k)=0;
else
phi1(k)=-y(k-i);
end
end
for j= 1 : nb
if (k-j)<=0
phi2(k)=0;
else
phi2(k)=u(k-nk-j);
end
end
phi = [phi1 phi2];
if (k == 1)
theta(k)=theta0+W(k)*E(k);
Pinv(k)=Pinv0-Pinv0*phi(k)*phi(k)'*Pinv0;
else
E(k)=y(k)-phi(k)'*theta(k-1);
Pinv(k)=Pinv(k-1)-(Pinv(k1)*phi(k)*phi(k)'*Pinv(k1));
W(k)=Pinv(k)*phi(k);
theta(k)=theta(k-1)+W(k)*E(k)
end
end
end