%   Script ZUEBERT.M zur Herstellung von Bildern
%
%  Dreidimensionale Darstellung der Z-Übertragungsfunktion
%
% verwendet EPSBILD.M
%
% J. Lunze
% 16.12.1996
% für 3.Auflage: 15.3.2004
% für 5. Auflage: 19.10.2007
% für 7. Auflage 25.5.2012
% für 10. Auflage: 9.9.2019
%
%
clear
close all

%% Dreidimensionale Darstellung der Übertragungsfunktion
%
figure(1)
%   kontinuierliches System aus Abschnitt RTI-6.5.3
zk=[1 -2];
nk=[1 2 5];
[A, B, C, D]=tf2ss(zk, nk);
Ta=0.4;
[Ad, Bd]=c2d(A, B, Ta);
[zs, ns]=ss2tf(Ad, Bd, C, D);
k=0;
for kd=1:40,
for ko=1:72,
    delta =  4.1 - kd*0.20;
    D(ko, kd) = delta;
    omega = -4.05 + ko*0.1;
    O(ko, kd) = omega;
    z = delta + i*omega;
    G = (zs(1,1)*z^2 + zs(1,2)*z + zs(1,3))/(ns(1,1)*z^2 + ns(1,2)*z + ns(1,3));
    F(ko, kd) = 20*log10(abs(G));
end;
end;
%plot3(O, D, F);
%mesh(F), axis('ij');
mesh(O, D, F);
axis([-4 +4 -4 +4 -50 20]);
view([142.5, 30]);
latextitle('Amplitude $$|G(z)|$$ der Z-\"Ubertragungsfunktion');
latexxlabel('$${\rm Re}(z)$$');   %  in $$\frac{1}{\rm s}$$
latexylabel('$${\rm Im}(z)$$');     %  in $$\frac{1}{\rm s}$$
rotateY;
latexzlabel('$$|G|$$ in dB');
rotateZ;
xticks([-4 -2 0 2 4]);
yticks([-4 -2 0 2 4]);
zticks([-40 -20 0 20 40]);


%%    Ausschnitt der Darstellung auf dem Einheitskreis
%
figure(2)
O=[];
D=[];
F=[];
k=0;
for omegaT=0.001:0.05:2*pi    % z-Werte auf dem Einheitskreis e{j omega T}
    k=k+1;
    W(k)=omegaT/Ta;           % Frequenz \omega, die zu diesem Punkt gehört
    Realz = cos(omegaT);      % z = Realt + i*Imagz
    D(k,1) = Realz;
    D(k,2) = Realz;
    Imagz = sin(omegaT);
    O(k,2) = Imagz;
    O(k,1) = Imagz-0.01;
    z = Realz + i*Imagz;
    G = (zs(1,1)*z^2 + zs(1,2)*z + zs(1,3))/(ns(1,1)*z^2 + ns(1,2)*z + ns(1,3));
    F(k,2) = 20*log10(abs(G));
    F(k,1) = -50;
end;
%plot3(O, D, F);
%mesh(F), axis('ij');
mesh(O, D, F, 'EdgeColor', 'b');
axis([-1.2 +1.2 -1.2 +1.2 -50 20]);
view([142.5, 30])
latexxlabel('$${\rm Re}(z)$$');   %  in $$\frac{1}{\rm s}$$
latexylabel('$${\rm Im}(z)$$');   %  in $$\frac{1}{\rm s}$$
rotateY;
latexzlabel('$$|G|$$ in dB');
rotateZ;
latextitle('$$|G(z)|$$ auf dem Einheitskreis');
xticks([-1 0 1]);
yticks([-1 0 1]);
zticks([-40 -20 0 20 40]);

%%    Darstellung dieses "Ringes" im Bodediagramm
%
figure(3)
subplot(4,1,[1,2]);
kmax=length(W)/2;
semilogx(W(1:kmax), F(1:kmax,2), 'b')
latexylabel('$$|G|$$ in dB');
rotateY;
latexxlabel('$$\omega$$ in $$\frac{\rm rad}{\rm s}$$');
grid('on');
axis([0.1 10 -15 0]);
xticks([0.1 1 10]);
yticks([-15 -10 -5 0]);

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