%       *****************************     
%       ARMONICO.M
%       CALCULA LOS COEFICIENTES DE ANALISIS DE FOURIER,
%       ***********************************************************
 	
% Los datos del archivo de entrada tienen que estar
% uno debajo del otro
%Los nombres de los archivos (entrada y salida) '
%Si el archivo proviene del resultado de correr FILONDA.FOR entonces primero eliminar los titulos'
%Este PROGRAMA  NO CONSIDERA CUANDO EL DELTA DE TIEMPO/ESPACIO NO ES LA UNIDAD

	% LA CANTIDAD DE DATOS = N'
	% la cantidad de datos tiene que ser par'
%	read (*,*) N
% CUAL ES EL PERIODO FUNDAMENTAL no siempre el periodo fundamental es igual a N'
 %P  periodo fundamental


clear
 X=xlsread('AA.xls');

 [N,M]=size(X);
 K=N/2;
 P=N	 ;
%       CALCULA EL PROMEDIO
 PROM=mean(X)   ;

%     CALCULO DE LA VARIANZA TOTAL

    VAR=var(X);
    VAR1=VAR^0.5;

%     CALCULO DE LOS COEFICIENTES DE FOURIER   
	
	CA(1:K)=0;
	PI=3.1415926;
	for I=1: K-1;
      NARM(I)=I;  
      SUM=0;
	  SAM=0;
	  for J=1:N;
        
	    SUM=SUM+X(J)*sin(I*2*PI*J/P);
	    SAM=SAM+X(J)*cos(I*2*PI*J/P);
    end;
	  A(I)=2*SUM/N;
	  B(I)=2*SAM/N;
	  AM(I)=(A(I)^2+B(I)^2)^0.5;
	  C(I)=(((AM(I)^2)/2)/VAR)*100;
      CA(I)=sum(C);  
        
  end;
    
%  calculo de la ultima armonica
   SUM=0;	
   for J=1:N;
	  SUM=SUM+(X(J)*cos(K*2*PI*J/P));
    end;
	B(K)=SUM/N;
	AM(K)=B(K);
	C(K)=((AM(K)^2)/VAR)*100;
	CA(K)=CA(K-1)+C(K);
	A(K)=0;
    NARM(K)=K;
   
  
    % Genero la matriz AA con las amplitudes A & B y AM=sqrt(A2+B2)
    
    AAA={'NARM' 'A' 'B' 'AMPL' 'C' 'CA'};
    AA(:,1)=NARM';
    AA(:,2)=A';
    AA(:,3)=B';
    AA(:,4)=AM';
    AA(:,5)=C';
    AA(:,6)=CA';
    disp(AAA)
    disp(AA)
    dlmwrite('Armonicos.xls',AA,'\t',1,0);
    disp(' ')   
    disp('----------------------------------------------')   
    disp('Se genero el archivo de salida Armonicos.xls')   
    disp('Descripcion de las variables de archivo xls')   
    disp('1șCol 2șCol 3șCol 4șCol 5șCol 6șCol  ')   
    disp('NșArm   A      B   AMPL  VAR  VARACUM  ')   
    disp(' ')   
    disp('NOTA: En versiones viejas puede fallar la funcion de exportar')     
    disp('Si falla la variable AA contiene la misma informacion en el Workspace')   
    
