%           llamadaPrincipal.m

% 1.Inicializacion
close all
clear
clc

% 2.Entradas

% 2.1. Parametros de procesado
    % 2.1.1 Del analisis inicial

nombreFichero ='con22';

DeltaT        = 0.5;    % en segundos
tasa_muestreo = 0.1;    % en segundos

num_canales   = 2;      % Numero de Canales
por_desv      = 90;     % Porcentaje de desviacion admisible (%)

flagAnalizarDatosOriginales = 2;    % 1=Datos Originales, 2=Datos Filtrados

    % 2.1.2 Del analisis espectral

% num_puntos    = 512;     % numero de puntos que se va a usar para la DFT. 
                        %Si la longitud es menor que este parametro, 
                        %entonces se realiza el zero pading
cadena        ='';
cadena        ='respuesta en frecuencia de la señal introducida en el canal ';
f             = [];
                        
% 2.2. Opciones de visualizacion de resultados

    % 2.2.1 Del analisis inicial
    
flagVerSalidasNumericas     = 0;    % 1=Si, 0=No
flagVerDatosOriginales      = 0;    % 1=Si, 0=No
flagVerDatosFiltrados       = 0;    % 1=Si, 0=No
flagPintarDatosOriginales   = 0;    % 1=Si, 0=No
flagPintarDatosFiltrados    = 0;    % 1=Si, 0=No

    % 2.2.2 Del analisis espectral
    
flagVerResultadoPot         = 0;    % 1=Si, 0=No
flagVerMaxMinPot            = 0;    % 1=Si, 0=No
flagPintarPotUN             = 1;    % 1=Si, 0=No
flagPintarPotNor            = 1;    % 1=Si, 0=No
flagPintarPotPorc           = 1;    % 1=Si, 0=No

% 2.3. Opciones de almacenamiento de resultados

flagGuardarResultados   = 1;


% 3. Calculos (llamadaS principalES)

% 3.1 Caracterizacion y filtrado inicial de los datos

[X,Y,Xb,Yb,max,min,mediana,media,desv,...
        xmax_loc,ymax_loc,xmin_loc,...
        ymin_loc]=func_principal(tasa_muestreo,num_canales,por_desv,DeltaT,nombreFichero);

% 3.2 Analisis Espectral
% flagAnalizarDatosOriginales = 1;    % 1=Datos Originales, 2=Datos Filtrados

xF = [];
yF = [];

if(flagAnalizarDatosOriginales==1)
    xF = [X;X]';
    yF = Y;
elseif(flagAnalizarDatosOriginales==2)
    xF = Xb;
    yF = Yb;
end

[Pyy,PyyNorm,PyyPorc,Potencia,maximoPotencia,minimoPotencia,...
        localmaxPot,localminPot,...
        num_puntos] = analisisFourier(xF,yF,tasa_muestreo,num_canales);


% 4. Mostramos resultados

% 4.1 Resultados Numericos
    %4.1.1. Del Analisis inicial
    
if (flagVerDatosOriginales==1)
    X=[X;X]'
    Y
end

if (flagVerDatosFiltrados==1)
    Xb
    Yb
end

if(flagVerSalidasNumericas==1)
    max
    min
    mediana
    media
    desv
end

    %4.1.2. Del analisis espectral
    
 if (flagVerResultadoPot == 1)
     Pyy
     PyyNorm
     PyyPorc
     Potencia
end

if (flagVerMaxMinPot ==1)
    maximoPotencia
    minimoPotencia
    localmaxPot
    localminPot
end
 
% 4.2 Resultados en Graficos

    %4.2.1. Del Analisis inicial
if(flagPintarDatosOriginales==1)
    figure
    plot(X,Y)
    title('Datos Originales')
    xlabel('t (s)')
    ylabel('Señales Medidas')
end

if(flagPintarDatosFiltrados==1)
    figure
    plot(Xb,Yb)
    title('Datos Filtrados')
    xlabel('t (s)')
    ylabel('Señales Filtradas')
end

    %4.2.2. Del analisis espectral
    
if(flagPintarPotUN == 1)
    
    f=(0:num_puntos/2-1)/(tasa_muestreo*num_puntos);
    for i=1:num_canales
   	    figure
    	plot(f,Pyy(1:num_puntos/2,i))
    	ylabel(strcat(cadena,num2str(i)))
        xlabel('frecuencia (Hz)')
        title('Potencia en unidades naturales')
	end
    
end

if(flagPintarPotNor==1)
    f=(0:num_puntos/2-1)/(tasa_muestreo*num_puntos);
	for i=1:num_canales
   	    figure
    	plot(f,PyyNorm(1:num_puntos/2,i))
    	ylabel(strcat(cadena,num2str(i)))
        xlabel('frecuencia (Hz)')
        title('Potencia normalizada respecto al máximo de Potencia')
	end
end

if(flagPintarPotPorc == 1)
    f=(0:num_puntos/2-1)/(tasa_muestreo*num_puntos);%
	for i=1:num_canales
   	    figure
    	plot(f,PyyPorc(1:num_puntos/2,i))
    	ylabel(strcat(cadena,num2str(i)))
        xlabel('frecuencia (Hz)')
        title('porcentaje de potencia respecto a la total')
	end
end


% 5. Almacenar resultados

% ya lo veremos: con wk1write

if(flagGuardarResultados==1)
    
    % guardaremos Xb, Yb, median, ...
    
end
