%   Script DISSYST.M zur Herstellung von Bildern
%
%   Verhalten von zeitdiskreten Systemen
%
% verwendet EPSBILD.M
%
% J. Lunze
% 27.11.1996
% für 2. Auflage: 16.12.2001
% für 3. Auflage: 18.3.2004
% für 4. Auflage: 12.1.2006
% für 5. Auflage: 18.10.2007
% für 7. Auflage: 31.3.2012
% für 8. Auflage: 28.3.2014
% für 10. Auflage: 26.3.2020
%
%
clear
close all
%%   1. Modell
%
A = [-0.8 2;
     -2 -0.8];
b = [2;
     2];
cT = [1 1];
d = 0.3;
x0=[1, 1];
Ta=0.4;
[Ad, bd]=c2d(A, b, Ta);



%%  Darstellung des Systemverhaltens
%
%
figure(1);
Tdu=[0];
Up(1,1)=0;
for k=1:10
    U(k,1)=0.5^k;
    Up(2*k,1)=U(k,1);
    Up(2*k+1,1)=U(k,1);
    Tdu=[Tdu k-1 k];
end;
[Y, X]=dlsim(Ad, bd, cT, d, 0.5*U);
Td=[0:max(size(Y))-1];
T=Ta*[-3 -2 -1 Td];
Tu=Ta*[-3 -2 -1 Tdu];
Y = [0; 0; 0; Y];
Up = [0; 0; 0; Up];
Yp(1,1)=0;
for k=1:10
    Yp(2*k,1)=Y(k+3,1);
    Yp(2*k+1,1)=Y(k+3,1);
end;
%Yp=[0; 0; 0; Yp];
Tk=[];
for k1=0:max(size(U))-1
for k=0:9
    Uk(10*k1+k+1,1)=U(k1+1,1);
    Tk(10*k1+k+1,1)=k1*Ta+k*Ta/10;
end;
end;
Systemverhalten=ss(A, b, cT, d);
[Yk, Tk,  X]=lsim(Systemverhalten, 0.5*Uk, Tk);
subplot(6,1,[1,2]);
plot(Tu, Up(1:max(size(Tu)), 1), 'b');
hold on
plot([0 0],[-0.5 1.5],'k:', [-1 8],[0 0],'k:');
xleer;
yleer;
latexylabel('$$u\;\;$$');
rotateY;
latextitle('Darstellungsformen f\"ur das Systemverhalten');
axis([-1 3 -0.1 0.6]);
hold off
%
subplot(6,1,[3,4]);
plot(T, Y, 'bo', Tk, Yk, 'b--',[-1 0 0],[0 0 d*U(1,1)],'b--', [0 0],[-0.5 1.5],'k:', [-1 8],[0 0],'k:');
xleer;
yleer;
latexylabel('$$y\;\;$$');
rotateY;
axis([-1 3 -0.2 0.5]);
subplot(6,1,[5,6]);
plot(T, Y, 'bo', Tu(1,4:24), Yp(1:21,1), 'b', [-1 0 0],[0 0 d*U(1,1)], 'b', [0 0],[-0.5 1.5],'k:', [-1 8],[0 0],'k:');
xleer;
yleer;
latexxlabel('$$t$$');
latexylabel('$$y\;\;$$');
rotateY;
axis([-1 3 -0.2 0.5]);



%%  Darstellung der Wirkung eines Haltegliedes
%
figure(2)
subplot(3,1,[1,2]);
Ta=pi/6;
Td=[];
Yd=[];
for k=0:20
   Yd(2*k+1,1)=sin(k*Ta);
   Yd(2*k+2,1)=sin(k*Ta);
   Ym(k+1)=sin(k*Ta);
   Tm(k+1)=k;
   Td(2*k+1,1)=k;
   Td(2*k+2,1)=k+1;
end;
Yk=[];
Ampl=2*sin(Ta/2)/Ta;
for k=0:200
   Yk(k+1,1)=sin(k*Ta/10);
   Ya(k+1,1)=Ampl*sin(k*Ta/10-Ta/2);
end;
Tk=[0:0.1:20];
plot(Td, Yd, 'b', Tk, Yk, 'b', Tk, Ya, 'b--', Tm, Ym, 'bo', [0, 20], [0 0], 'k:');
xleer;
latexxlabel('$$t$$');
yleer;
latexylabel('$$y\;\;$$');
rotateY;
axis([0 20 -1.2 1.2]);
%xticks([]);
%yticks([]);
latextitle('Wirkung eines Haltegliedes');

%%   Versteckte Schwingungen
%
%
figure(3)
A = [-1  0     0
      0  -0.1 0.5
      0  -0.5 -0.1];
B = [0; 0; 0];
C = [1 1 1];
D = 0;
x0=[10; 10; 10];
System=ss(A, B, C, D);
[Y, T]=initial(System, x0);
Ta=2*pi;
[Ad, Bd]=c2d(A, B, Ta);
Yd=dinitial(Ad, Bd, C, D, x0);
Td=[0:length(Yd)-1]*Ta;
subplot(6,1,[1,2]);
plot(T, Y, 'b', Td, Yd, 'bo', [0 50], [0 0], 'k:');
latextitle('Versteckte Schwingungen');
xleer;
yleer;
latexylabel('$$y\;\;$$');
rotateY;
axis([0 30 -20 30]);
%xticks([]);
%yticks([]);
x0=[10; 10; -10];
[Y, T]=initial(System, x0);
[Yd, Xd]=dinitial(Ad, Bd, C, D, x0);
Td=[0:length(Yd)-1]*Ta;
subplot(6,1,[3,4]);
plot(T, Y, 'b', Td, Yd, 'bo', [0 50], [0 0], 'k:');
yleer;
xleer;
axis([0 30 -20 20]);
%xticks([]);
%yticks([]);%xticks([]);
%yticks([]);
latexylabel('$$y\;\;$$');
rotateY;
latexxlabel('$$t$$');


%%   Aliasing--Effekt der Abtastung
%
%
figure(4)
Ta=1;
omega2=1;
omega1=omega2+2*pi/Ta;
Yd=[];
Td=[];
for k=0:20
   Yd(2*k+1,1)=sin(k*Ta*omega1);
   Yd(2*k+2,1)=sin(k*Ta*omega1);
   Td(2*k+1,1)=k;
   Td(2*k+2,1)=k+1;
end;
Td=Td*Ta;
T=[];
Ya=[];
for k=0:10
   Ya(k+1,1)=sin(k*Ta*omega1);
   T(k+1,1)=k;
end;
T=T*Ta;
Y1=[];
Y2=[];
for k=0:2000
   Y1(k+1,1)=sin(k*Ta/100*omega1);
   Y2(k+1,1)=sin(k*Ta/100*omega2);
end;
Tk=[0:0.01:20];
subplot(4,1,[1,2]);;
plot(Tk, Y1, 'b', Tk, Y2, 'b--', T, Ya, 'bo');
xleer;
latexylabel('$$y\;\;$$');
rotateY;
axis([0 10 -1.1 1.1]);
yticks([-1 0 1]);
latextitle('Aliasing bei einer Abtastung');
subplot(4,1,[3,4]);;
plot(Td, Yd, 'b', [0 100], [0 0], 'k:');
axis([0 10 -1.1 1.1]);
xticks([0 5 10]);
yticks([-1 0 1]);
latexxlabel('$$k$$');
latexylabel('$$y\;\;$$');
rotateY;

%%   Wahl der Abtastzeit
%
%
figure(5);
Ta=2*pi/6;                     %  wT = 6 wGr
for k=0:20
   Yd1(2*k+1,1)=sin(k*Ta);
   Yd1(2*k+2,1)=sin(k*Ta);
   Td1(2*k+1,1)=k;
   Td1(2*k+2,1)=k+1;
end;
Td1=Td1*Ta;
subplot(6,1,[1,2]);
plot(Td1, Yd1, 'b', [0 50], [0 0], 'k:');
yleer;
xleer;
latexylabel('$$y\;\;$$');
rotateY;
latextitle('Signal bei unterschiedlicher Abtastzeit');
axis([0 20 -1.2 1.2]);
%xticks([]);
%yticks([]);
%
Ta=2*pi/20;                          %  wT = 20 wGr
for k=0:120
   Yd1(2*k+1,1)=sin(k*Ta);
   Yd1(2*k+2,1)=sin(k*Ta);
   Td1(2*k+1,1)=k;
   Td1(2*k+2,1)=k+1;
end;
Td1=Td1*Ta;
subplot(6,1,[3,4]);
plot(Td1, Yd1, 'b', [0 50], [0 0], 'k:');
yleer;
xleer;
latexylabel('$$y\;\;$$');
rotateY;
axis([0 20 -1.2 1.2]);
%xticks([]);
%yticks([]);
%
Ta=2*pi/40;                          %  wT = 40 wGr
for k=0:400
   Yd1(2*k+1,1)=sin(k*Ta);
   Yd1(2*k+2,1)=sin(k*Ta);
   Td1(2*k+1,1)=k;
   Td1(2*k+2,1)=k+1;
end;
Td1=Td1*Ta;
subplot(6,1,[5,6]);
plot(Td1, Yd1, 'b', [0 50], [0 0], 'k:');
xleer;
yleer;
latexxlabel('$$k$$');
latexylabel('$$y\;\;$$');
rotateY;
axis([0 20 -1.2 1.2]);
%xticks([]);
%yticks([]);

%%
%     Ausgabe der Bilder als .eps-Dateien
%
Epsbildc15('dissyst');
