function [Pyy,PyyNorm,PyyPorc,Potencia,maximoPotencia,minimoPotencia,...
        localmaxPot,localminPot,...
        num_puntos] = analisisFourier(xF,yF,tasa_muestreo,num_canales)
%funcion que calcula la DFT a una serie de puntos. Esta me devuelve la
%transformada de Fourier en unidades naturales, normalizada y en porcentaje
%con respecto a la potencia total.
%Ademas del calculo de potencias, vamos a caracterizar la funcion de la
%potencia, es decir, vamos a calcular sus maximo y minimos tanto locales
%como globales.
%Si num_puntos=-1, no se realiza nada, debido a que se ha salido
%incorrectamente de la ventana donde se solicita dicha información
%el algoritmo de la fft permite obtener la DFT reduciendo el numero de
%operaciones para realizar este calculo. La idea basica consiste en dividir
%la DFT en DFT's mas pequeñas.

Y            = [];                %almacen de la transformada de Fourier
Pyy          = [];                %densidad espectral de potencia
f            = [];                %vector de frecuencia para representación
num_puntos   = [];                %num de ptos de la transf. de Fourier
PyyNorm      = [];                %Dens espectral de potencia Normalizada
PyyPorc      = [];                %Dens espectral de Potencia en porcentaje
maximoPotencia = [];              %Maximo de la dens espectral de potencia
minimoPotencia = [];              %Minimo de la dens espectral de potencia
localmaxPot  = [];                %maximos locales de dens espectral potencia
localminPot  = [];                %minimos locales de dens espectral potencia
Potencia     = [];

%Función mediante la cual le solicitamos al usuario que introduzca el
%número de puntos que desea usar para realizar la tranformada de Fourier.
%Si devuelve -1 es debido a que se ha pulsado cancelar o bien la x.
[num_puntos]=introduc_num_puntos;
    
if num_puntos ~= -1
    %transformada discreta de Fourier con num_puntos. Si la longitud de la
    %señal es menor que el numero de puntos se realiza el zero padding.
    Y = fft(yF,num_puntos);

    %densidad espectral de potencia, es dividido por el numero de puntos porque
    %la potencia es la energia partido por el periodo de la señal
    Pyy = Y.*conj(Y)/num_puntos;

    %Máximo de la potencia. Se usa para representar la potencia normalizada
    maximoPotencia=max(Pyy);
    %Minimo de potencia
    minimoPotencia=min(Pyy);
    %Maximos y Minimos locales
    for i=1:(num_canales+2)
        h=imregionalmax(Pyy(:,i));
        localmaxPot=[localmaxPot,h.*Pyy(:,i)];
        n=imregionalmin(Pyy(:,i));
        localminPot=[localminPot,n.*Pyy(:,i)];
    end

    %Calculamos la densidad espectral de potencia para cada canal con respecto
    %al maximo de potencia (densidad espectral normalizada)
    for i=1:(num_canales+2)
        PyyNorm=[PyyNorm,Pyy(:,i)/maximoPotencia(i)];
    end

    %Potencia total de la señal. Se usa para representar la potencia
    %de la señal en porcentaje
    Potencia=sum(Pyy);
    %Calculamos la densidad espectral de potencia con respecto al total de
    %Potencia de cada canal
    for i=1:(num_canales+2)
        PyyPorc=[PyyPorc,100*Pyy(:,i)/Potencia(i)];
    end
end



