clear all
load('inverse_tf.mat');

%-----System Identifikation des Antriebes A------------------------

%plot des Eingangssignals, dass ich zur Systemidentifikation benutzt habe
plot(t_ident,u_ident);

%plot des Ausgangssignals, dass ich zur Systemidentifikation benutzt habe
figure
plot(t_ident,y_ident);

%plot des Ausgangssignals, dass ich zur Validierung des Modells benutzt habe
figure
plot(t_val,u_val);

%Vergleich der prognostizierten (y_pred) und dem richtigen Ausgangssignal (y_val)

figure
plot(t_val,y_val,'b',t_val,y_pred,'r');

%Die resultate sind für meine Zwecke Spitze!

%Die Übertragungsfunktion von Antrieb A nenne ich G:


%----------Stabilitätsbetrachtung------------------------


num_G_zp=get(G,'num');  %Auslesen des Zählers der Ü-Funktion
den_G_zp=get(G,'den');  %Auslesen des Nenners der Ü-Funktion

%Nenner und Zähler der Ü-Funktion sind ein Struktur-Array
%deshalb {1,1}:

%Stellt die Null- Polstellen der Übertragungsfunktion dar:
figure
[hz,hp,ht] = zplane(num_G_zp{1,1},den_G_zp{1,1}); 
legend('zeros','poles')
set(hz,'Color',[0 1 0]);
set(hp,'Color',[1 0 0]);
%axis([xmin xmax ymin ymax])

%Summary: all poles and zeros are in the unit circle: Voraussetzung für
%Inversion

%--------------------------------------












%---------------------------------------------------------



% Ich habe G invertiert:

G_inv=inv(G);

%Berechnung LTI response (später soll die Übertragungsfunktion in Simulink implemetiert werden)

%u_recon ist die rekonstruierte Position. So the output of
%drive A (validation signal y_val) is the input to the LTI system:

u_recon=lsim(G_inv,y_val,t_val);

% Ergebnis:
% ??? Error using ==> lti.lsim at 81
% Error using ==> ltipack.ltidata.utCheckComputability at 27
% Cannot simulate the time response of LTI models with more zeros than poles.

%wie finde ich eine gute Näherung für G_inv???



