% TIME_SERIE_HISTOG histogram

%
% 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);

% on met sous la forme annee mois
ind_olr=reshape(v,122,29);
clear v;
k=122*29;

% on calcule l ecart type sur la serie entiere de l OLR
ind_olr1=reshape(ind_olr, k,1);
ind_olr2=1*std(ind_olr1);
clear ind_olr1;

%%%%%%%%%%%% 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=NaN*ones(240,21,4);
type_temps_compomin=NaN*ones(240,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>10 && 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 && delta(b-1)>0 && delta(b-2)>0 && ind_olr(b,a)>ind_olr2);

            compteurmax=compteurmax+1;
            type_temps_compomax(compteurmax,1,:)=occu_type_tps(b-10,a,:);
            type_temps_compomax(compteurmax,2,:)=occu_type_tps(b-9,a,:);
            type_temps_compomax(compteurmax,3,:)=occu_type_tps(b-8,a,:);
            type_temps_compomax(compteurmax,4,:)=occu_type_tps(b-7,a,:);
            type_temps_compomax(compteurmax,5,:)=occu_type_tps(b-6,a,:);
            type_temps_compomax(compteurmax,6,:)=occu_type_tps(b-5,a,:);
            type_temps_compomax(compteurmax,7,:)=occu_type_tps(b-4,a,:);
            type_temps_compomax(compteurmax,8,:)=occu_type_tps(b-3,a,:);
            type_temps_compomax(compteurmax,9,:)=occu_type_tps(b-2,a,:);
            type_temps_compomax(compteurmax,10,:)=occu_type_tps(b-1,a,:);
            type_temps_compomax(compteurmax,11,:)=occu_type_tps(b,a,:);
            type_temps_compomax(compteurmax,12,:)=occu_type_tps(b+1,a,:);
            type_temps_compomax(compteurmax,13,:)=occu_type_tps(b+2,a,:);
            type_temps_compomax(compteurmax,14,:)=occu_type_tps(b+3,a,:);
            type_temps_compomax(compteurmax,15,:)=occu_type_tps(b+4,a,:);
            type_temps_compomax(compteurmax,16,:)=occu_type_tps(b+5,a,:);
            type_temps_compomax(compteurmax,17,:)=occu_type_tps(b+6,a,:);
            type_temps_compomax(compteurmax,18,:)=occu_type_tps(b+7,a,:);
            type_temps_compomax(compteurmax,19,:)=occu_type_tps(b+8,a,:);
            type_temps_compomax(compteurmax,20,:)=occu_type_tps(b+9,a,:);
            type_temps_compomax(compteurmax,21,:)=occu_type_tps(b+10,a,:);
         elseif (delta(b+1)>0 && delta(b)>0 && delta(b-1)<0 && delta(b-2)<0 && ind_olr(b,a)<(-ind_olr2));
            compteurmin=compteurmin+1;
            type_temps_compomin(compteurmin,1,:)=occu_type_tps(b-10,a,:);
            type_temps_compomin(compteurmin,2,:)=occu_type_tps(b-9,a,:);
            type_temps_compomin(compteurmin,3,:)=occu_type_tps(b-8,a,:);
            type_temps_compomin(compteurmin,4,:)=occu_type_tps(b-7,a,:);
            type_temps_compomin(compteurmin,5,:)=occu_type_tps(b-6,a,:);
            type_temps_compomin(compteurmin,6,:)=occu_type_tps(b-5,a,:);
            type_temps_compomin(compteurmin,7,:)=occu_type_tps(b-4,a,:);
            type_temps_compomin(compteurmin,8,:)=occu_type_tps(b-3,a,:);
            type_temps_compomin(compteurmin,9,:)=occu_type_tps(b-2,a,:);
            type_temps_compomin(compteurmin,10,:)=occu_type_tps(b-1,a,:);
            type_temps_compomin(compteurmin,11,:)=occu_type_tps(b,a,:);
            type_temps_compomin(compteurmin,12,:)=occu_type_tps(b+1,a,:);
            type_temps_compomin(compteurmin,13,:)=occu_type_tps(b+2,a,:);
            type_temps_compomin(compteurmin,14,:)=occu_type_tps(b+3,a,:);
            type_temps_compomin(compteurmin,15,:)=occu_type_tps(b+4,a,:);
            type_temps_compomin(compteurmin,16,:)=occu_type_tps(b+5,a,:);
            type_temps_compomin(compteurmin,17,:)=occu_type_tps(b+6,a,:);
            type_temps_compomin(compteurmin,18,:)=occu_type_tps(b+7,a,:);
            type_temps_compomin(compteurmin,19,:)=occu_type_tps(b+8,a,:);
            type_temps_compomin(compteurmin,20,:)=occu_type_tps(b+9,a,:);
            type_temps_compomin(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_compomin1=type_temps_compomin(1:compteurmin,:,:);
type_temps_compomax1=type_temps_compomax(1:compteurmax,:,:);
clear type_temps_compomin type_temps_compomax;

% 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_compomin(:,:)=sum(type_temps_compomin1);
type_temps_compomax(:,:)=sum(type_temps_compomax1);
clear type_temps_compomin1 type_temps_compomax1;

% on fait la somme => le nbre de jour avec 1 type de temps persistant
% pour chaque jour
%' transpose => tableau (cluster,jour)
sum_kara_min=sum((type_temps_compomin)');
sum_kara_max=sum((type_temps_compomax)');
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_compomin(a,b)/sum_kara_min(a);
      kara_max(a,b)=type_temps_compomax(a,b)/sum_kara_max(a);
   end;
end;

x=[-10:1:10]';
kara_diff=kara_min-kara_max;

for a=1:4;
    subplot(2,2,a);
    diff=kara_diff(:,a)*100;
    jour=[-10:10]';
    if a==1;
       bar(jour,diff,'r');
       c=[1 0.55 0];
       bar(jour,diff),colormap(c);
    elseif a==2;
       bar(jour,diff,'g');
    elseif a==3;
       bar(jour,diff,'b');
    else
       bar(jour,diff,'r');
    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('Atl low','Fontsize',8,'Fontname','Arial');
    elseif a==2;
       title('Atl Ridge','Fontsize',8,'Fontname','Arial');
    elseif a==3;
       title('NAO-','Fontsize',8,'Fontname','Arial');
    else
       title('Blocking','Fontsize',8,'Fontname','Arial');
    end;
end;

figure(1);
print('-depsc2','time_serie_type_tps_pb.eps');
