% Exemplo 16.12 - Circuito RC em cascata
clear all
close all
clc

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Plotando o gráfico do módulo
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
w = logspace(-2, 4);
for i = 1:length(w)
    MdB(i) = mag2db((1/sqrt(1+w(i)^2))*(100/sqrt(100^2+w(i)^2))); 
end
figure
semilogx(w,MdB,'k','LineWidth',2);
axis([10^(-2) 10^4 -120 20])
grid on
hold on

% Plotando assíntotas de acordo com ex.16.11
wb = [10^(-2) 10^1]; % Baixa frequência até a frequência de corte wc=10
MAb = [0 0];         % Assíntota da magnitude para baixa frequência
plot(wb,MAb,'r','LineWidth',2);

wa = [10^1 10^4];   % Alta frequência a partir da frequência de corte wc=10
MAa = [40-40*log10(wa(1)) 40-40*log10(wa(2))];  % Assíntota da magnitude 
                                                % para alta frequência   
plot(wa,MAa,'r','LineWidth',2);

% Plotando assíntotas considerando H=H1*H2
% H1:
wb = [10^(-2) 10^0]; % Baixa frequência até a frequência de corte wc=1
MAb = [0 0];         % Assíntota da magnitude para baixa frequência
plot(wb,MAb,'b:','LineWidth',2);

wa = [10^0 10^4];   % Alta frequência a partir da frequência de corte wc=1
MAa = [-20*log10(wa(1)) -20*log10(wa(2))];  % Assíntota da magnitude 
                                            % para alta frequência   
plot(wa,MAa,'b:','LineWidth',2);

% H2:
wb = [10^(-2) 10^2]; % Baixa frequência até a frequência de corte wc=100
MAb = [0 0];         % Assíntota da magnitude para baixa frequência
plot(wb,MAb,'b:','LineWidth',2);

wa = [10^2 10^4];   % Alta frequência a partir da frequência wc=100
MAa = [40-20*log10(wa(1)) 40-20*log10(wa(2))];  % Assíntota da magnitude 
                                                % para alta frequência   
plot(wa,MAa,'b:','LineWidth',2);

% H1H2:
w = [10^(-2) 10^0]; 
M = [0 0];         
plot(w,M,'b','LineWidth',2);

w = [10^0 10^2];   
M = [-20*log10(w(1)) -20*log10(w(2))];
plot(w,M,'b','LineWidth',2);

w = [10^2 10^4];   
M = [40-40*log10(w(1)) 40-40*log10(w(2))];     
plot(w,M,'b','LineWidth',2);


title('Diagrama assintótico de módulo')
xlabel('\omega')
ylabel('M_{dB}(\omega)')

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Plotando o gráfico da fase
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

w = logspace(-2, 4);
for i = 1:length(w)
    Phi(i) = (-atan(w(i))-atan(w(i)/100))*180/pi; 
end
figure
semilogx(w,Phi,'k','LineWidth',2);
axis([10^(-2) 10^4 -200 20])
grid on
hold on

% Plotando assíntotas de acordo com ex.16.11
wb = [10^(-2) 10^0]; % Baixa frequência até w=0.1*wc=10^0
PAb = [0 0];         % Assíntota da fase para baixa frequência
plot(wb,PAb,'r','LineWidth',2);

w = [10^(0) 10^2];     % Reta que liga w=0.1*wc a 10*wc
PA = [0 -180];         % Assíntota da fase para frequencias próximas a wc
plot(w,PA,'r','LineWidth',2);

wa = [10^2 10^4];   % Alta frequência a partir de w=10*wc
PAa = [-180 -180];  % Assíntota da fase para alta frequência
plot(wa,PAa,'r','LineWidth',2);

% Plotando assíntotas considerando H=H1*H2
% H1:
wb = [10^(-2) 10^(-1)]; % Baixa frequência até w=0.1*wc=10^-1
PAb = [0 0];         % Assíntota de fase para baixa frequência
plot(wb,PAb,'b:','LineWidth',2);

w = [10^(-1) 10^1];     % Reta que liga w=0.1*wc a 10*wc
PA = [0 -90];           % Assíntota da fase para frequencias próximas a wc
plot(w,PA,'b:','LineWidth',2);

wa = [10^1 10^4];   % Alta frequência a partir de w=10*wc
PAa = [-90 -90];    % Assíntota de fase para alta frequência 
plot(wa,PAa,'b:','LineWidth',2);

% H2:
wb = [10^(-2) 10^1]; % Baixa frequência até w=0.1*wc=10^-1
PAb = [0 0];         % Assíntota de fase para baixa frequência
plot(wb,PAb,'b:','LineWidth',2);

w = [10^(1) 10^3];      % Reta que liga w=0.1*wc a 10*wc
PA = [0 -90];           % Assíntota da fase para frequencias próximas a wc
plot(w,PA,'b:','LineWidth',2);

wa = [10^3 10^4];   % Alta frequência a partir de w=10*wc
PAa = [-90 -90];    % Assíntota de fase para alta frequência 
plot(wa,PAa,'b:','LineWidth',2);

% H1H2:
w = [10^(-2) 10^-1]; 
P = [0 0];         
plot(w,P,'b','LineWidth',2);

w = [10^-1 10^3];   
P = [0 -180];
plot(w,P,'b','LineWidth',2);

w = [10^3 10^4];   
P = [-180 -180];     
plot(w,P,'b','LineWidth',2);

title('Diagrama assintótico de fase')
xlabel('\omega')
ylabel('\Phi(\omega)')
