function asymp(sys,reg,b)
% syntax:
% asymp(sys)
% funkce na vykresleni asymptoticke frekvencni charakteristiky
% systemu sys
%
% asymp(sys,'b')
% pro vykresleni skutecne charakteristiky k asymptoticke ch.
%
% asymp(sys,reg)
% funkce na vykresleni asymptoticke frekvencni charakteristiky
% systemu sys - cervena, reg - modra a Fo=sys*reg - cerna
%
% asymp(sys,reg,'b')
% pro vykresleni skutecnych charakteristik k asymptotickym
% funkce pozaduje asy5.m

if ((nargin==1)||(nargin == 2)&&(ischar(reg)))
[cs,js]=tfdata(sys,'v');
[ms,ps,w] = bode(sys);
[ams ws] = asy5(cs,js,w);
grid on;
subplot(2,1,1);
grid on;
semilogx(ws,ams,'r');
i=1:length(w);
PS(i)=ps(1,1,i);
if (nargin == 2)
hold on;
MS(i)=20*log10(ms(1,1,i));
semilogx(w,MS,'--r');
hold off;
end
grid on;
title('Asymptotická amplitudová a fázová frekvenční charakteristika')
ylabel('Amplituda [ dB ]');
xlabel('Omega [ rad/s ]');
subplot(2,1,2);
semilogx(w,PS,'r');
ylabel('Fáze[°]');
xlabel('Omega [ rad/s ]');
grid on
end
if ((nargin > 1)&&(ischar(reg) == 0))
f0 = sys * reg;
jedna = minreal(tf(1,1));
sys = jedna*sys;
reg = jedna*reg;
[cr,jr]=tfdata(reg,'v');
[cs,js]=tfdata(sys,'v');
[co,jo]=tfdata(f0,'v');
[mo,po,w] = bode(f0);
[amf0 wf0] = asy5(co,jo,w);
[ams ws] = asy5(cs,js,w);
[amr wr] = asy5(cr,jr,w);
grid on;
subplot(2,1,1);
grid on;
semilogx(wf0,amf0,'k');
hold on
semilogx(ws,ams,'r');
semilogx(wr,amr,'b');
ylabel('Amplituda [ dB ]');
xlabel('Omega [ rad/s ]');
legend('F0','Fs','Fr')
title('Asymptotická amplitudová a fázová frekvenční charakteristika')
hold off;
[ms,ps] = bode(sys,w);
[mr,pr] = bode(reg,w);
i=1:length(w);
PO(i)=po(1,1,i);
PS(i)=ps(1,1,i);
PR(i)=pr(1,1,i);
grid on;
subplot(2,1,2);
grid on;
semilogx(w,PO,'k');
hold on;
semilogx(w,PS,'r');
semilogx(w,PR,'b');
ylabel('Fáze[°]');
xlabel('Omega [ rad/s ]');
grid on;
hold off;
end

if nargin > 2
grid on;
subplot(2,1,1);
grid on;
hold on;
MO(i)=20*log10(mo(1,1,i));
MS(i)=20*log10(ms(1,1,i));
MR(i)=20*log10(mr(1,1,i));
semilogx(w,MO,'--k');
semilogx(w,MS,'--r');
semilogx(w,MR,'--b');
end