% CONCEPTO DTFT
%
% Descripcion:
% Esta practica describe el concepto de la DTFT en terminos de la
% correlacion de la señal a analizar con una exponencial compleja a una
% frecuencia w. 
%
% Curso de Doctorado:
% TRATAMIENTO DIGITAL DE SEÑAL. TECNICAS DE DATA MINING EN LA SUPERVISIÓN DE PROCESOS INDUSTRIALES
% 
% 
% Ignacio Diaz Blanco (2004)
% Prof. Titular 
% Area de Ingenieria de Sistemas y Automatica
% Universidad de Oviedo

disp('Borramos el espacio de trabajo...');
clear;
close all;
fm = 40000;
tm = inv(fm);
disp('Establecemos la frecuencia de muestreo ...');
disp(strcat('fm=',num2str(fm),' Hz'));
disp(strcat('tm=inv(fm)=',num2str(tm),' seg'));
disp('Pulsar una tecla...');
pause;

disp('Generamos una señal suma de varias senoides ...');
N = 2000;
t = 0:tm:tm*(N-1);
y = 1*sin(2*pi*t*50) + 0.5*cos(2*pi*t*250+pi/3) + 0.2*cos(2*pi*t*750+pi/4);
figure(1);
plot(t,y,t,y,'.');
title('y(k)');
xlabel('t(seg)');
soundsc(y,fm);
pause;

disp('Generamos una exponencial compleja: exp(j*k*th) ...');
f = 250;
e = exp(j*2*pi*t*f);
figure(2);
title(strcat('exp(j*2*pi*',num2str(f),'*t)'));
grid on;
axis([-2 2 -2 2]);
hold on;
comet(real(e),imag(e));
hold off;
pause;


disp('Multiplicamos ambas señales: y(k).exp(-j*k*th) ...');
ye = y.*conj(e);
figure(3);
title(strcat('y(k).exp(j*2*pi*',num2str(f),'*t)'));
grid on;
axis([-2 2 -2 2]);
hold on;
comet(real(ye),imag(ye));
hold off;
pause;

% CALCULAMOS LA SUMA_k ( y(k).exp(-j*k*th) )
disp(strcat('Hallamos la media (c.d.m.) F(',num2str(f),')=(1/N)*SUM_k{y(k).exp(-j*2*pi*',num2str(f),')}'));
F = sum(y.*conj(e))/N,

figure(3);
title(strcat('F(',num2str(f),', y(k).exp(j*2*pi*',num2str(f),'*t)'));
grid on;
axis([-2 2 -2 2]);
hold on;
plot(ye);
compass([0,real(F)],[0,imag(F)]);
hold off;

disp('Observamos como:'); 
disp(strcat('   1) abs(F)=', num2str(abs(F)), ' coincide con la mitad de la amplitud de la senoide correspondiente'));
disp(strcat('   2) arg{F}=', num2str(angle(F)), ' coincide con el desfase de la senoide'));

