

A=[ 1 1 0 0 0;
    0 1 0 0 0;
    0 0 -1 1 0;
    0 0 0 -1 0;
    0 0 0 0 -2]

B=[0; 1; 0; -1; 0]
C=[1 0 1 0 1]

D=0 
fprintf('--------------------------\n')
fprintf('Matrice di Inosservabilità\n')
Os=[C; C*A; C*A^2; C*A^3; C*A^4]

rank(Os)
fprintf('Sistema completamente osservabile\n')

fprintf('--------------------------\n')
fprintf('Matrice di Raggiungibilità\n')
R=[B A*B A^2*B A^3*B A^4*B]

rank(R)
fprintf('Sistema non raggiungibile\n')

fprintf('---------------------------------\n')
fprintf('Forma Standard di Raggiungibilità\n')

orth(R)

fprintf('Matrice di Trasformazione\n')
Tr=[orth(R) [0;0;0;0;1]]

Ar=inv(Tr)*A*Tr
Br=inv(Tr)*B
Cr=C*Tr

fprintf('---------------------------------\n')
fprintf('Forma Canonica di Osservazione\n')

p=poly(A);

p=p*[0 0 0 0 0;
     0 0 0 0 -1;
     0 0 0 -1 0;
     0 0 -1 0 0;
     0 -1 0 0 0;
     -1 0 0 0 0];

dim=size(C);

Ao1=[zeros(dim(1,1),dim(1,2)-1); eye(4,4)];

Ao=[Ao1 transpose(p)]

Co=[0 0 0 0 1]

Os=[Co; Co*Ao; Co*Ao^2; Co*Ao^3; Co*Ao^4]

T=inv(Os)*Os

Bo=inv(T)*B

sys=SS(A,B,C,D);

tf(sys)

fprintf('---------------------------------\n')
fprintf('STIMA OTTIMA\n')
