% TIME_SERIE_HISTOG3  histogram 3 days

% initialisation
clear;
close all;
figure(1);
orient('landscape')

%%%%%%%%%%%%%%% FICHIER OLR
% ouverture / lecture du fichier
fid=fopen('sahel_pb.dat','r');
v=fread(fid,3538,'float');
fclose(fid);
k=122*29;

% on centre et on reduit la serie de l OLR
ind_olr=reshape(v, k,1);
clear v;
olr_std=std(ind_olr);
olr_moy=mean(ind_olr);

for a=1:3538;
    ind_olr(a)=(ind_olr(a)-olr_moy)/olr_std;
end;
ind_olr=reshape(ind_olr,122,29);

%%%%%%%%%%%% FICHIER TYPE DE TEMPS
% on ouvre le fichier
status=load('occu.txt');
occu=status;
clear status;

% on reorganise le fichier de type de temps (jours,annees,cluster)
y=reshape(occu,122,58,4);
clear occu;

% on selectionne les annees de 1979 a 2005
occu_type_tps(:,:,:)=y(:,30:58,:);
clear y;

% intialisation des tableaux
type_temps_compomax=zeros(3,90,21,4);
type_temps_compomin=zeros(3,90,21,4);
compteurmax=0;
compteurmin=0;

% boucle sur les annees
for a=1:29;
   clear delta;
   delta=zeros(122,1);
   % boucle sur les jours
   for b=1:122;
        if b>1;
            delta(b)=ind_olr(b,a)-ind_olr(b-1,a);
        end;
   end;
   for b=1:122;
      % 1ere condition (laisser une marge de 10)
      if (b>11 && b<112)
%        condition 1 on est a un maximum deltas apres sont negetifs et
%             delta avant postifs
         if (delta(b+1)<0 && delta(b)>0 && ind_olr(b,a)>1.5);

            compteurmax=compteurmax+1;
            type_temps_compomax(1,compteurmax,1,:)=occu_type_tps(b-10,a,:);
            type_temps_compomax(1,compteurmax,2,:)=occu_type_tps(b-9,a,:);
            type_temps_compomax(1,compteurmax,3,:)=occu_type_tps(b-8,a,:);
            type_temps_compomax(1,compteurmax,4,:)=occu_type_tps(b-7,a,:);
            type_temps_compomax(1,compteurmax,5,:)=occu_type_tps(b-6,a,:);
            type_temps_compomax(1,compteurmax,6,:)=occu_type_tps(b-5,a,:);
            type_temps_compomax(1,compteurmax,7,:)=occu_type_tps(b-4,a,:);
            type_temps_compomax(1,compteurmax,8,:)=occu_type_tps(b-3,a,:);
            type_temps_compomax(1,compteurmax,9,:)=occu_type_tps(b-2,a,:);
            type_temps_compomax(1,compteurmax,10,:)=occu_type_tps(b-1,a,:);
            type_temps_compomax(1,compteurmax,11,:)=occu_type_tps(b,a,:);
            type_temps_compomax(1,compteurmax,12,:)=occu_type_tps(b+1,a,:);
            type_temps_compomax(1,compteurmax,13,:)=occu_type_tps(b+2,a,:);
            type_temps_compomax(1,compteurmax,14,:)=occu_type_tps(b+3,a,:);
            type_temps_compomax(1,compteurmax,15,:)=occu_type_tps(b+4,a,:);
            type_temps_compomax(1,compteurmax,16,:)=occu_type_tps(b+5,a,:);
            type_temps_compomax(1,compteurmax,17,:)=occu_type_tps(b+6,a,:);
            type_temps_compomax(1,compteurmax,18,:)=occu_type_tps(b+7,a,:);
            type_temps_compomax(1,compteurmax,19,:)=occu_type_tps(b+8,a,:);
            type_temps_compomax(1,compteurmax,20,:)=occu_type_tps(b+9,a,:);
            type_temps_compomax(1,compteurmax,21,:)=occu_type_tps(b+10,a,:);

            type_temps_compomax(2,compteurmax,1,:)=occu_type_tps(b-9,a,:);
            type_temps_compomax(2,compteurmax,2,:)=occu_type_tps(b-8,a,:);
            type_temps_compomax(2,compteurmax,3,:)=occu_type_tps(b-7,a,:);
            type_temps_compomax(2,compteurmax,4,:)=occu_type_tps(b-6,a,:);
            type_temps_compomax(2,compteurmax,5,:)=occu_type_tps(b-5,a,:);
            type_temps_compomax(2,compteurmax,6,:)=occu_type_tps(b-4,a,:);
            type_temps_compomax(2,compteurmax,7,:)=occu_type_tps(b-3,a,:);
            type_temps_compomax(2,compteurmax,8,:)=occu_type_tps(b-2,a,:);
            type_temps_compomax(2,compteurmax,9,:)=occu_type_tps(b-1,a,:);
            type_temps_compomax(2,compteurmax,10,:)=occu_type_tps(b,a,:);
            type_temps_compomax(2,compteurmax,11,:)=occu_type_tps(b+1,a,:);
            type_temps_compomax(2,compteurmax,12,:)=occu_type_tps(b+2,a,:);
            type_temps_compomax(2,compteurmax,13,:)=occu_type_tps(b+3,a,:);
            type_temps_compomax(2,compteurmax,14,:)=occu_type_tps(b+4,a,:);
            type_temps_compomax(2,compteurmax,15,:)=occu_type_tps(b+5,a,:);
            type_temps_compomax(2,compteurmax,16,:)=occu_type_tps(b+6,a,:);
            type_temps_compomax(2,compteurmax,17,:)=occu_type_tps(b+7,a,:);
            type_temps_compomax(2,compteurmax,18,:)=occu_type_tps(b+8,a,:);
            type_temps_compomax(2,compteurmax,19,:)=occu_type_tps(b+9,a,:);
            type_temps_compomax(2,compteurmax,20,:)=occu_type_tps(b+10,a,:);
            type_temps_compomax(2,compteurmax,21,:)=occu_type_tps(b+11,a,:);

           type_temps_compomax(3,compteurmax,1,:)=occu_type_tps(b-11,a,:);
            type_temps_compomax(3,compteurmax,2,:)=occu_type_tps(b-10,a,:);
            type_temps_compomax(3,compteurmax,3,:)=occu_type_tps(b-9,a,:);
            type_temps_compomax(3,compteurmax,4,:)=occu_type_tps(b-8,a,:);
            type_temps_compomax(3,compteurmax,5,:)=occu_type_tps(b-7,a,:);
            type_temps_compomax(3,compteurmax,6,:)=occu_type_tps(b-6,a,:);
            type_temps_compomax(3,compteurmax,7,:)=occu_type_tps(b-5,a,:);
            type_temps_compomax(3,compteurmax,8,:)=occu_type_tps(b-4,a,:);
            type_temps_compomax(3,compteurmax,9,:)=occu_type_tps(b-3,a,:);
            type_temps_compomax(3,compteurmax,10,:)=occu_type_tps(b-2,a,:);
            type_temps_compomax(3,compteurmax,11,:)=occu_type_tps(b-1,a,:);
            type_temps_compomax(3,compteurmax,12,:)=occu_type_tps(b,a,:);
            type_temps_compomax(3,compteurmax,13,:)=occu_type_tps(b+1,a,:);
            type_temps_compomax(3,compteurmax,14,:)=occu_type_tps(b+2,a,:);
            type_temps_compomax(3,compteurmax,15,:)=occu_type_tps(b+3,a,:);
            type_temps_compomax(3,compteurmax,16,:)=occu_type_tps(b+4,a,:);
            type_temps_compomax(3,compteurmax,17,:)=occu_type_tps(b+5,a,:);
            type_temps_compomax(3,compteurmax,18,:)=occu_type_tps(b+6,a,:);
            type_temps_compomax(3,compteurmax,19,:)=occu_type_tps(b+7,a,:);
            type_temps_compomax(3,compteurmax,20,:)=occu_type_tps(b+8,a,:);
            type_temps_compomax(3,compteurmax,21,:)=occu_type_tps(b+9,a,:);


         elseif (delta(b+1)>0 && delta(b)<0 && ind_olr(b,a)<-1.5);
            compteurmin=compteurmin+1;
            type_temps_compomin(1,compteurmin,1,:)=occu_type_tps(b-10,a,:);
            type_temps_compomin(1,compteurmin,2,:)=occu_type_tps(b-9,a,:);
            type_temps_compomin(1,compteurmin,3,:)=occu_type_tps(b-8,a,:);
            type_temps_compomin(1,compteurmin,4,:)=occu_type_tps(b-7,a,:);
            type_temps_compomin(1,compteurmin,5,:)=occu_type_tps(b-6,a,:);
            type_temps_compomin(1,compteurmin,6,:)=occu_type_tps(b-5,a,:);
            type_temps_compomin(1,compteurmin,7,:)=occu_type_tps(b-4,a,:);
            type_temps_compomin(1,compteurmin,8,:)=occu_type_tps(b-3,a,:);
            type_temps_compomin(1,compteurmin,9,:)=occu_type_tps(b-2,a,:);
            type_temps_compomin(1,compteurmin,10,:)=occu_type_tps(b-1,a,:);
            type_temps_compomin(1,compteurmin,11,:)=occu_type_tps(b,a,:);
            type_temps_compomin(1,compteurmin,12,:)=occu_type_tps(b+1,a,:);
            type_temps_compomin(1,compteurmin,13,:)=occu_type_tps(b+2,a,:);
            type_temps_compomin(1,compteurmin,14,:)=occu_type_tps(b+3,a,:);
            type_temps_compomin(1,compteurmin,15,:)=occu_type_tps(b+4,a,:);
            type_temps_compomin(1,compteurmin,16,:)=occu_type_tps(b+5,a,:);
            type_temps_compomin(1,compteurmin,17,:)=occu_type_tps(b+6,a,:);
            type_temps_compomin(1,compteurmin,18,:)=occu_type_tps(b+7,a,:);
            type_temps_compomin(1,compteurmin,19,:)=occu_type_tps(b+8,a,:);
            type_temps_compomin(1,compteurmin,20,:)=occu_type_tps(b+9,a,:);
            type_temps_compomin(1,compteurmin,21,:)=occu_type_tps(b+10,a,:);

            type_temps_compomin(2,compteurmin,1,:)=occu_type_tps(b-9,a,:);
            type_temps_compomin(2,compteurmin,2,:)=occu_type_tps(b-8,a,:);
            type_temps_compomin(2,compteurmin,3,:)=occu_type_tps(b-7,a,:);
            type_temps_compomin(2,compteurmin,4,:)=occu_type_tps(b-6,a,:);
            type_temps_compomin(2,compteurmin,5,:)=occu_type_tps(b-5,a,:);
            type_temps_compomin(2,compteurmin,6,:)=occu_type_tps(b-4,a,:);
            type_temps_compomin(2,compteurmin,7,:)=occu_type_tps(b-3,a,:);
            type_temps_compomin(2,compteurmin,8,:)=occu_type_tps(b-2,a,:);
            type_temps_compomin(2,compteurmin,9,:)=occu_type_tps(b-1,a,:);
            type_temps_compomin(2,compteurmin,10,:)=occu_type_tps(b,a,:);
            type_temps_compomin(2,compteurmin,11,:)=occu_type_tps(b+1,a,:);
            type_temps_compomin(2,compteurmin,12,:)=occu_type_tps(b+2,a,:);
            type_temps_compomin(2,compteurmin,13,:)=occu_type_tps(b+3,a,:);
            type_temps_compomin(2,compteurmin,14,:)=occu_type_tps(b+4,a,:);
            type_temps_compomin(2,compteurmin,15,:)=occu_type_tps(b+5,a,:);
            type_temps_compomin(2,compteurmin,16,:)=occu_type_tps(b+6,a,:);
            type_temps_compomin(2,compteurmin,17,:)=occu_type_tps(b+7,a,:);
            type_temps_compomin(2,compteurmin,18,:)=occu_type_tps(b+8,a,:);
            type_temps_compomin(2,compteurmin,19,:)=occu_type_tps(b+9,a,:);
            type_temps_compomin(2,compteurmin,20,:)=occu_type_tps(b+10,a,:);
            type_temps_compomin(2,compteurmin,21,:)=occu_type_tps(b+11,a,:);

            type_temps_compomin(3,compteurmin,1,:)=occu_type_tps(b-10,a,:);
            type_temps_compomin(3,compteurmin,2,:)=occu_type_tps(b-9,a,:);
            type_temps_compomin(3,compteurmin,3,:)=occu_type_tps(b-8,a,:);
            type_temps_compomin(3,compteurmin,4,:)=occu_type_tps(b-7,a,:);
            type_temps_compomin(3,compteurmin,5,:)=occu_type_tps(b-6,a,:);
            type_temps_compomin(3,compteurmin,6,:)=occu_type_tps(b-5,a,:);
            type_temps_compomin(3,compteurmin,7,:)=occu_type_tps(b-4,a,:);
            type_temps_compomin(3,compteurmin,8,:)=occu_type_tps(b-3,a,:);
            type_temps_compomin(3,compteurmin,9,:)=occu_type_tps(b-2,a,:);
            type_temps_compomin(3,compteurmin,10,:)=occu_type_tps(b-1,a,:);
            type_temps_compomin(3,compteurmin,11,:)=occu_type_tps(b,a,:);
            type_temps_compomin(3,compteurmin,12,:)=occu_type_tps(b+1,a,:);
            type_temps_compomin(3,compteurmin,13,:)=occu_type_tps(b+2,a,:);
            type_temps_compomin(3,compteurmin,14,:)=occu_type_tps(b+3,a,:);
            type_temps_compomin(3,compteurmin,15,:)=occu_type_tps(b+4,a,:);
            type_temps_compomin(3,compteurmin,16,:)=occu_type_tps(b+5,a,:);
            type_temps_compomin(3,compteurmin,17,:)=occu_type_tps(b+6,a,:);
            type_temps_compomin(3,compteurmin,18,:)=occu_type_tps(b+7,a,:);
            type_temps_compomin(3,compteurmin,19,:)=occu_type_tps(b+8,a,:);
            type_temps_compomin(3,compteurmin,20,:)=occu_type_tps(b+9,a,:);
            type_temps_compomin(3,compteurmin,21,:)=occu_type_tps(b+10,a,:);
         end;
      end;
   end;
end;

% on ne selectionne que la partie du tableau ou il y a des valeurs
type_temps_compomin=type_temps_compomin(:,1:compteurmin,:,:);
type_temps_compomax=type_temps_compomax(:,1:compteurmax,:,:);
sizemin=3*compteurmin;
sizemax=3*compteurmax;

type_temps_compomin=reshape(type_temps_compomin,sizemin,21,4);
type_temps_compomax=reshape(type_temps_compomax,sizemax,21,4);
disp(['iii : compteurmin =', int2str(compteurmin)]);
disp(['iii : compteurmax =', int2str(compteurmax)]);

% on fait le test de Student
student1=zeros(21,4);
for a=1:21;
    for b=1:4;
       x=type_temps_compomin(1:sizemin,a,b);
       y=type_temps_compomax(1:sizemax,a,b);
       student1(a,b)=ttest(x,y);
    end;
end;

% on fait la somme des types de temps sur toute la periode de temps
% on obtent un tableau de la forme (jours-avant-apres,cluster)
type_temps_compomin1(:,:)=sum(type_temps_compomin);
type_temps_compomax1(:,:)=sum(type_temps_compomax);
clear type_temps_compomin type_temps_compomax;

% on fait la somme => le nbre de jour avec 1 type de temps persistant
% pour chaque jour
sum_kara_min=sum((type_temps_compomin1)');
sum_kara_max=sum((type_temps_compomax1)');
sum_kara_min=sum_kara_min';
sum_kara_max=sum_kara_max';

% on traduit le nbre d occurence en frequences relatives
kara_min=zeros(21,4);
kara_max=zeros(21,4);
for a=1:21;
   for b=1:4;
      kara_min(a,b)=type_temps_compomin1(a,b)/sum_kara_min(a);
      kara_max(a,b)=type_temps_compomax1(a,b)/sum_kara_max(a);
   end;
end;

x=[-10:1:10]';
kara_diff=kara_min-kara_max;
table_ttest=zeros(21,4);
for a=1:21
    for b=1:4;
        if student1(a,b)==1;
           table_ttest(a,b)=kara_diff(a,b);
        else
           table_ttest(a,b)=NaN;
        end;
    end;
end;
for a=1:4;
    subplot(2,2,a);
    diff=kara_diff(:,a)*100;
    diff2=table_ttest(:,a)*100;
    jour=[-10:10]';
    if a==1;
       c=[1 0.55 0];
       bar(jour,diff),colormap(c);
       hold on;
       plot(jour,diff2,'k*');
    elseif a==2;
       bar(jour,diff,'g');
       hold on;
       plot(jour,diff2,'k*');
    elseif a==3;
       bar(jour,diff,'b');
       hold on;
       plot(jour,diff2,'k*');
    else
       bar(jour,diff,'r');
       hold on;
       plot(jour,diff2,'k*');
    end;
    set (gca,'XTick',[-10:10],'XTickLabel',[-10:10],'fontname','Arial','fontsize',6);
    set (gca,'YTick',[-40:20:40],'YTickLabel',[-40:20:40],'fontname','Arial','fontsize',6);
    axis([-10 10 -40 40]);
    set (gca,'tickDir','out');
    if a==1;
       title('Frequence Atl Low (filtre PB) Differences min - max  Seuil 1.5','Fontsize',8,'Fontname','Arial');
    elseif a==2;
       title('Frequence Atl Ridge (filtre PB) Differences min - max  Seuil 1.5','Fontsize',8,'Fontname','Arial');
    elseif a==3;
       title('Frequence NAO- (filtre PB) Differences min - max  Seuil 1.5','Fontsize',8,'Fontname','Arial');
    else
       title('Frequence Blocking (filtre PB) Differences min - max  Seuil 1.5','Fontsize',8,'Fontname','Arial');
    end;
end;

figure(1);
print('-depsc2','time_serie_type_tps_pb.eps');
