% Clase practica numero 2.

% Cálculo de los coeficientes de la serie de Fourier y luego reconstruccion

% En primer lugar se trata de escribir una funcion que calcule de forma
% numerica los coeficientes de la serie de Fourier para una onda
% periodica.
% La funcion recibe como argumentos un periodo de la señal muestrado y el
% vector de tiempos asociado.

function ak=cserf(sig,t,k)
% sig: senial de la que queremos calcular la serie de Fourier
% t: Vector de tiempos sobre el que esta muestreada la senial.
% k: indices de los coeficientes que se desean calcular

paso=t(2)-t(1);
npuntos=length(t);
ncoef=length(k);
w0=2*pi/(t(npuntos)-t(1)); % frecuencia fundamental calculada a partir del per.
im=sqrt(-1); % numero imaginario puro
for i=1:ncoef
   integ=0;
   for j=1:npuntos
      integ=integ+sig(j)*exp(-im * k(i)*w0*t(j))*paso; % Metodo simple de aproximar la integral.
   end
   ak(i)=integ;
end



% Ahora hay que programar una funcion capaz de reconstruir la onda periodica

function x=sintet(ak,k,t,T0)
% ak: valores de los coeficientes
% k: indices de los coeficientes
% t: puntos donde se quiere reconstruir la onda
% T0: periodo fundamental de la onda

ncoef=length(ak);
npuntos=length(t);
im=sqrt(-1);
w0=2*pi/T0;
for i=1:npuntos
   integ=0;
   for j=1:ncoef
      integ=integ+ak(j)*exp(im*w0*k(j)*t(i));
   end
   x(i)=integ;
end

% Finalmente hay que probar que estas funciones estan bien calculando los coeficientes
% y reconstruyendo alguna onda periodica.

   
