%% ==================================================================
%% DIFERENCIA DE PRIMER ORDEN HACIA ADELANTE VS. DIFERENCIADOR EXACTO
%% ==================================================================

clear all; %  Limpiar todas las variables definidas

% Defino algunas opciones por defecto
set (0, 'DefaultAxesFontname', 'Times New Roman') 
set (0, 'DefaultAxesFontsize', 12) 
set (0, 'DefaultTextFontname', 'Times New Roman') 
set (0, 'DefaulttextFontsize', 12)

% Definimos el vector frecuencia angular digital w:
w = (0:pi/100:pi-pi/100);

% Diferenciador exacto
H_ex       = 1i*w;
Amp_ex     = w;
Fase_ex    = angle(H_ex);
Fase_ex(1) = pi/2; % esto arregla la indeterminaci�n de la fase para w = 0

% Primera diferencia hacia adelante: H(Z) = 1/Z - 1 
H_ad       = exp(+1i*w)-1.0;
Amp_ad     = abs(H_ad);
Fase_ad    = angle(H_ad); 
Fase_ad(1) = +pi/2; % esto arregla la indeterminaci�n de la fase para w = 0

%___________________________________________________________________

% Graficamos los espectros de amplitud

figure(1); clf;
plot(w,Amp_ex,'k;Dif. exacto;',w,Amp_ad,'b;Dif. adelante;')
legend('location','northwest')
axis([0 pi 0 pi])
title('Espectros de amplitud')
xlabel('\omega');
ylabel('|H(\omega)|');
xt      = 0:pi:pi;
xtlabel = [ '0' ; '{/Symbol p}' ];
yt      = 0:pi:pi;
ytlabel = [ '0' ; '{/Symbol p}' ];
set(gca,'xtick',xt,'xticklabel',xtlabel,'ytick',yt,'yticklabel',ytlabel);

% Guardamos el gráfico de la pantalla en un postscript
print('dif_adelante_a.eps','-depsc','-S800,600'); 

%___________________________________________________________________

% Graficamos los espectros de fase

figure(2); clf;
plot(w,Fase_ex,'k;Dif. exacto;',
     w,Fase_ad,'b;Dif. adelante;')
legend('location','northwest')
axis([0 pi -pi pi])
title('Espectros de fase')
xlabel('\omega');
ylabel('\Phi(\omega)');
xt      = 0:pi:pi;
xtlabel = [ '0' ; '{/Symbol p}' ];
yt      = -pi:pi/2:pi;
ytlabel = ['-{/Symbol p}';'-{/Symbol p}/2';'0';'{/Symbol p}/2';'{/Symbol p}'];
set(gca,'xtick',xt,'xticklabel',xtlabel,'ytick',yt,'yticklabel',ytlabel);

% Guardamos el gráfico de la pantalla en un postscript
print('dif_adelante_b.eps','-depsc','-S800,600'); 