% Analisis de la BER entre fingerprints de un anuncio con algun tipo 
% de procesado y los fingerprints correspondientes a los anuncios 
% originales

% Fecha de creacion: 16 de Abril de 2007

N=4960;
num_band=33;
over_lap=31/32;
finf=300;
fsup=2000;
%alpha=0.18;       % umbral para considerar deteccion correcta

time_detect=8000;       

m=20;      % mxn es el tamaño de los fingerprints 
n=32;

fi=fopen('p_robustez','a'); % fichero para guardar los resultados de 
                            % todas las pruebas de robustez

% Calculo de los fingerprints correspondientes a los anuncios originales

f_08_19_01_8000_8=fingerprint_actualizable(wavread('Anuncios\Procesado\05_19_01_8000_8'),N,over_lap,num_band,finf,fsup);
f_10_19_01_8000_8=fingerprint_actualizable(wavread('Anuncios\Procesado\17_19_01_8000_8'),N,over_lap,num_band,finf,fsup);
f_12_19_01_8000_8=fingerprint_actualizable(wavread('Anuncios\Procesado\20_23_01_8000_8'),N,over_lap,num_band,finf,fsup);
f_13_19_01_8000_8=fingerprint_actualizable(wavread('Anuncios\Procesado\29_23_01_8000_8'),N,over_lap,num_band,finf,fsup);


% Calculo de los fingerprints correspondientes a la señal de audio que
% sufre algun tipo de procesado

anuncio_detectado1=wavread('Anuncios\Procesado\05_19_01_8000_8_ve4');
anuncio_detectado2=wavread('Anuncios\Procesado\17_19_01_8000_8_ve4');
anuncio_detectado3=wavread('Anuncios\Procesado\20_23_01_8000_8_ve4');
anuncio_detectado4=wavread('Anuncios\Procesado\29_23_01_8000_8_ve4');

   
% Para calcular la media de la BER y su desviacion típica,
% repetimos el proceso 1000 veces para cada anuncio
for j=1:1000      
        
    l=round((length(anuncio_detectado1)-time_detect)*rand(1)); 
    finger_detectado1=fingerprint_actualizable(anuncio_detectado1(l:l+time_detect-1,1),N,over_lap,num_band,finf,fsup);
    distancia1(j)=min(busqueda(finger_detectado1,f_08_19_01_8000_8));

    l=round((length(anuncio_detectado2)-time_detect)*rand(1)); 
    finger_detectado2=fingerprint_actualizable(anuncio_detectado2(l:l+time_detect-1,1),N,over_lap,num_band,finf,fsup);
    distancia2(j)=min(busqueda(finger_detectado2,f_10_19_01_8000_8));

    l=round((length(anuncio_detectado3)-time_detect)*rand(1)); 
    finger_detectado3=fingerprint_actualizable(anuncio_detectado3(l:l+time_detect-1,1),N,over_lap,num_band,finf,fsup);
    distancia3(j)=min(busqueda(finger_detectado3,f_12_19_01_8000_8));
    
    l=round((length(anuncio_detectado4)-time_detect)*rand(1)); 
    finger_detectado4=fingerprint_actualizable(anuncio_detectado4(l:l+time_detect-1,1),N,over_lap,num_band,finf,fsup);
    distancia4(j)=min(busqueda(finger_detectado4,f_13_19_01_8000_8));
    

end

% Calculo de la BER entre fingerprints y su desviacion tipica
p=1;

ber_media(p)=mean(distancia1)/(m*n);
ber_desv(p)=std(distancia1)/(m*n);
ber_max(p)=max(distancia1)/(m*n);
p=p+1;
ber_media(p)=mean(distancia2)/(m*n);
ber_desv(p)=std(distancia2)/(m*n);
ber_max(p)=max(distancia2)/(m*n);
p=p+1;
ber_media(p)=mean(distancia3)/(m*n);
ber_desv(p)=std(distancia3)/(m*n);
ber_max(p)=max(distancia3)/(m*n);
p=p+1;
ber_media(p)=mean(distancia4)/(m*n);
ber_desv(p)=std(distancia4)/(m*n);
ber_max(p)=max(distancia4)/(m*n);
 
% Guardamos los resultados
fprintf(fi,'\n\nCambio lineal de la velocidad en un +4%%\n');
fprintf(fi,'Número de iteraciones: 1000\n');
fprintf(fi,'                              BER     Desv. Estandar  Ber max.\n');
for i=1:4
    fprintf(fi,'Resultados del anuncio %1.0f:    %1.4f     %1.4f     %1.4f\n',i,ber_media(i),ber_desv(i),ber_max(i));
end

fi=fopen('p_robustez','r');
type p_robustez      % Abre el fichero creado