% %%%%%%%%%%%%%%% FICHIER pluie IRD % ouverture / lecture du fichier clear; close all; cd('Pluie_ird_25'); % on selectionne les mois d ete (attention aux annees bixestiles!) siz1=31+28+31+30+31+1; siz1bis=31+28+31+30+31+30+31+31+30; pluie=zeros(41,17,122,12); clear v fid; fid=fopen('pluvio.79.haut','r','b'); siz=41*17*365; v=fread(fid,siz,'float'); fclose(fid); v=reshape(v,41,17,365); clear a b c; for a=1:41; for b=1:17; for c=1:365; if v(a,b,c)>990; v(a,b,c)=NaN; elseif v(a,b,c)<0; v(a,b,c)=NaN; end; end; end; end; pluie(:,:,:,1)=v(:,:,siz1:siz1bis); % 1979 clear v fid; fid=fopen('pluvio.80.haut','r','b'); siz=41*17*366; v=fread(fid,siz,'float'); fclose(fid); v=reshape(v,41,17,366); clear a b c; for a=1:41; for b=1:17; for c=1:366; if v(a,b,c)>990; v(a,b,c)=NaN; elseif v(a,b,c)<0; v(a,b,c)=NaN; end; end; end; end; pluie(:,:,:,2)=v(:,:,siz1+1:siz1bis+1); % 1980 clear v fid; fid=fopen('pluvio.81.haut','r','b'); siz=41*17*365; v=fread(fid,siz,'float'); fclose(fid); v=reshape(v,41,17,365); clear a b c; for a=1:41; for b=1:17; for c=1:365; if v(a,b,c)>990; v(a,b,c)=NaN; elseif v(a,b,c)<0; v(a,b,c)=NaN; end; end; end; end; pluie(:,:,:,3)=v(:,:,siz1:siz1bis); % 1981 clear v fid; fid=fopen('pluvio.82.haut','r','b'); siz=41*17*365; v=fread(fid,siz,'float'); fclose(fid); v=reshape(v,41,17,365); clear a b c; for a=1:41; for b=1:17; for c=1:365; if v(a,b,c)>990; v(a,b,c)=NaN; elseif v(a,b,c)<0; v(a,b,c)=NaN; end; end; end; end; pluie(:,:,:,4)=v(:,:,siz1:siz1bis); % 1982 clear v fid; fid=fopen('pluvio.83.haut','r','b'); siz=41*17*365; v=fread(fid,siz,'float'); fclose(fid); v=reshape(v,41,17,365); clear a b c; for a=1:41; for b=1:17; for c=1:365; if v(a,b,c)>990; v(a,b,c)=NaN; elseif v(a,b,c)<0; v(a,b,c)=NaN; end; end; end; end; pluie(:,:,:,5)=v(:,:,siz1:siz1bis); % 1983 clear v fid; fid=fopen('pluvio.84.haut','r','b'); siz=41*17*366; v=fread(fid,siz,'float'); fclose(fid); v=reshape(v,41,17,366); clear a b c; for a=1:41; for b=1:17; for c=1:366; if v(a,b,c)>990; v(a,b,c)=NaN; elseif v(a,b,c)<0; v(a,b,c)=NaN; end; end; end; end; pluie(:,:,:,6)=v(:,:,siz1+1:siz1bis+1); % 1984 clear v fid; fid=fopen('pluvio.85.haut','r','b'); siz=41*17*365; v=fread(fid,siz,'float'); fclose(fid); v=reshape(v,41,17,365); clear a b c; for a=1:41; for b=1:17; for c=1:365; if v(a,b,c)>990; v(a,b,c)=NaN; elseif v(a,b,c)<0; v(a,b,c)=NaN; end; end; end; end; pluie(:,:,:,7)=v(:,:,siz1:siz1bis); % 1985 clear v fid; fid=fopen('pluvio.86.haut','r','b'); siz=41*17*365; v=fread(fid,siz,'float'); fclose(fid); v=reshape(v,41,17,365); clear a b c; for a=1:41; for b=1:17; for c=1:365; if v(a,b,c)>990; v(a,b,c)=NaN; elseif v(a,b,c)<0; v(a,b,c)=NaN; end; end; end; end; pluie(:,:,:,8)=v(:,:,siz1:siz1bis); % 1986 clear v fid; fid=fopen('pluvio.87.haut','r','b'); siz=41*17*365; v=fread(fid,siz,'float'); fclose(fid); v=reshape(v,41,17,365); clear a b c; for a=1:41; for b=1:17; for c=1:365; if v(a,b,c)>990; v(a,b,c)=NaN; elseif v(a,b,c)<0; v(a,b,c)=NaN; end; end; end; end; pluie(:,:,:,9)=v(:,:,siz1:siz1bis); % 1987 clear v fid; fid=fopen('pluvio.88.haut','r','b'); siz=41*17*366; v=fread(fid,siz,'float'); fclose(fid); v=reshape(v,41,17,366); clear a b c; for a=1:41; for b=1:17; for c=1:366; if v(a,b,c)>990; v(a,b,c)=NaN; elseif v(a,b,c)<0; v(a,b,c)=NaN; end; end; end; end; pluie(:,:,:,10)=v(:,:,siz1:siz1bis); % 1988 clear v fid; fid=fopen('pluvio.89.haut','r','b'); siz=41*17*365; v=fread(fid,siz,'float'); fclose(fid); v=reshape(v,41,17,365); clear a b c; for a=1:41; for b=1:17; for c=1:365; if v(a,b,c)>990; v(a,b,c)=NaN; elseif v(a,b,c)<0; v(a,b,c)=NaN; end; end; end; end; pluie(:,:,:,11)=v(:,:,siz1:siz1bis); % 1989 clear v fid; fid=fopen('pluvio.90.haut','r','b'); siz=41*17*365; v=fread(fid,siz,'float'); fclose(fid); v=reshape(v,41,17,365); clear a b c; for a=1:41; for b=1:17; for c=1:365; if v(a,b,c)>990; v(a,b,c)=NaN; elseif v(a,b,c)<0; v(a,b,c)=NaN; end; end; end; end; pluie(:,:,:,12)=v(:,:,siz1:siz1bis); % 1990 clear siz sizbis; clear v; cd('..'); save pluie.mat pluie; clear load pluie.mat % pluie dimension : lon lat jours annee (41 17 122 12) => jour annee lat lon (17 41 122 12) load eof2_olr_rossby_jjas.txt; % on met sous la forme annee mois eof2_olr_rossby_jjas=reshape(eof2_olr_rossby_jjas,122,22); olr_eof=eof2_olr_rossby_jjas(:,1:12); clear eof2_olr_rossby_jjas; % on calcule l ecart type sur la serie temporelle de l'olr k=122*12; olrbis=reshape(olr_eof,k,1); olrbis=std(olrbis); % intialisation des tableaux pluie_filtre_compomax=NaN*ones(30,31,17,41); pluie_filtre_compomin=NaN*ones(30,31,17,41); pluie=permute(pluie,[3 4 2 1]); compteurmax=0; compteurmin=0; % boucle sur les annees for a=1:12; clear delta; delta=zeros(122,1); % boucle sur les jours : on prepare avant for b=1:122; if b>1; delta(b)=olr_eof(b,a)-olr_eof(b-1,a); end; end; % boucle sur les jours for b=1:122; % 1ere condition (laisser une marge de 10) if (b>20 && b<112); % cas 1 : max deltas apres negetifs et deltas avant postifs if (delta(b+1)<0 && delta(b)<0 && delta(b-1)>0 && delta(b-2)>0 && olr_eof(b,a)>olrbis); compteurmax=compteurmax+1; pluie_filtre_compomax(compteurmax,1,:,:)=pluie(b-20,a,:,:); pluie_filtre_compomax(compteurmax,2,:,:)=pluie(b-19,a,:,:); pluie_filtre_compomax(compteurmax,3,:,:)=pluie(b-18,a,:,:); pluie_filtre_compomax(compteurmax,4,:,:)=pluie(b-17,a,:,:); pluie_filtre_compomax(compteurmax,5,:,:)=pluie(b-16,a,:,:); pluie_filtre_compomax(compteurmax,6,:,:)=pluie(b-15,a,:,:); pluie_filtre_compomax(compteurmax,7,:,:)=pluie(b-14,a,:,:); pluie_filtre_compomax(compteurmax,8,:,:)=pluie(b-13,a,:,:); pluie_filtre_compomax(compteurmax,9,:,:)=pluie(b-12,a,:,:); pluie_filtre_compomax(compteurmax,10,:,:)=pluie(b-11,a,:,:); pluie_filtre_compomax(compteurmax,11,:,:)=pluie(b-10,a,:,:); pluie_filtre_compomax(compteurmax,12,:,:)=pluie(b-9,a,:,:); pluie_filtre_compomax(compteurmax,13,:,:)=pluie(b-8,a,:,:); pluie_filtre_compomax(compteurmax,14,:,:)=pluie(b-7,a,:,:); pluie_filtre_compomax(compteurmax,15,:,:)=pluie(b-6,a,:,:); pluie_filtre_compomax(compteurmax,16,:,:)=pluie(b-5,a,:,:); pluie_filtre_compomax(compteurmax,17,:,:)=pluie(b-4,a,:,:); pluie_filtre_compomax(compteurmax,18,:,:)=pluie(b-3,a,:,:); pluie_filtre_compomax(compteurmax,19,:,:)=pluie(b-2,a,:,:); pluie_filtre_compomax(compteurmax,20,:,:)=pluie(b-1,a,:,:); pluie_filtre_compomax(compteurmax,21,:,:)=pluie(b,a,:,:); pluie_filtre_compomax(compteurmax,22,:,:)=pluie(b+1,a,:,:); pluie_filtre_compomax(compteurmax,23,:,:)=pluie(b+2,a,:,:); pluie_filtre_compomax(compteurmax,24,:,:)=pluie(b+3,a,:,:); pluie_filtre_compomax(compteurmax,25,:,:)=pluie(b+4,a,:,:); pluie_filtre_compomax(compteurmax,26,:,:)=pluie(b+5,a,:,:); pluie_filtre_compomax(compteurmax,27,:,:)=pluie(b+6,a,:,:); pluie_filtre_compomax(compteurmax,28,:,:)=pluie(b+7,a,:,:); pluie_filtre_compomax(compteurmax,29,:,:)=pluie(b+8,a,:,:); pluie_filtre_compomax(compteurmax,30,:,:)=pluie(b+9,a,:,:); pluie_filtre_compomax(compteurmax,31,:,:)=pluie(b+10,a,:,:); % cas 2 : min deltas apres positifs et deltas avant negatifs elseif (delta(b+1)>0 && delta(b)>0 && delta(b-1)<0 && delta(b-2)<0 && olr_eof(b,a)<(-olrbis)); compteurmin=compteurmin+1; pluie_filtre_compomin(compteurmin,1,:,:)=pluie(b-20,a,:,:); pluie_filtre_compomin(compteurmin,2,:,:)=pluie(b-19,a,:,:); pluie_filtre_compomin(compteurmin,3,:,:)=pluie(b-18,a,:,:); pluie_filtre_compomin(compteurmin,4,:,:)=pluie(b-17,a,:,:); pluie_filtre_compomin(compteurmin,5,:,:)=pluie(b-16,a,:,:); pluie_filtre_compomin(compteurmin,6,:,:)=pluie(b-15,a,:,:); pluie_filtre_compomin(compteurmin,7,:,:)=pluie(b-14,a,:,:); pluie_filtre_compomin(compteurmin,8,:,:)=pluie(b-13,a,:,:); pluie_filtre_compomin(compteurmin,9,:,:)=pluie(b-12,a,:,:); pluie_filtre_compomin(compteurmin,10,:,:)=pluie(b-11,a,:,:); pluie_filtre_compomin(compteurmin,11,:,:)=pluie(b-10,a,:,:); pluie_filtre_compomin(compteurmin,12,:,:)=pluie(b-9,a,:,:); pluie_filtre_compomin(compteurmin,13,:,:)=pluie(b-8,a,:,:); pluie_filtre_compomin(compteurmin,14,:,:)=pluie(b-7,a,:,:); pluie_filtre_compomin(compteurmin,15,:,:)=pluie(b-6,a,:,:); pluie_filtre_compomin(compteurmin,16,:,:)=pluie(b-5,a,:,:); pluie_filtre_compomin(compteurmin,17,:,:)=pluie(b-4,a,:,:); pluie_filtre_compomin(compteurmin,18,:,:)=pluie(b-3,a,:,:); pluie_filtre_compomin(compteurmin,19,:,:)=pluie(b-2,a,:,:); pluie_filtre_compomin(compteurmin,20,:,:)=pluie(b-1,a,:,:); pluie_filtre_compomin(compteurmin,21,:,:)=pluie(b,a,:,:); pluie_filtre_compomin(compteurmin,22,:,:)=pluie(b+1,a,:,:); pluie_filtre_compomin(compteurmin,23,:,:)=pluie(b+2,a,:,:); pluie_filtre_compomin(compteurmin,24,:,:)=pluie(b+3,a,:,:); pluie_filtre_compomin(compteurmin,25,:,:)=pluie(b+4,a,:,:); pluie_filtre_compomin(compteurmin,26,:,:)=pluie(b+5,a,:,:); pluie_filtre_compomin(compteurmin,27,:,:)=pluie(b+6,a,:,:); pluie_filtre_compomin(compteurmin,28,:,:)=pluie(b+7,a,:,:); pluie_filtre_compomin(compteurmin,29,:,:)=pluie(b+8,a,:,:); pluie_filtre_compomin(compteurmin,30,:,:)=pluie(b+9,a,:,:); pluie_filtre_compomin(compteurmin,31,:,:)=pluie(b+10,a,:,:); end; end; end; end; % on fait la somme des valeurs de pluie_filtreentiel sur le nbre d occurences % on obtent un tableau de la forme (jours-avant-apres,lon,lat) pluie_filtre_compomin1(:,:,:)=nanmean(pluie_filtre_compomin); clear pluie_filtre_compomin; pluie_filtre_compomax1(:,:,:)=nanmean(pluie_filtre_compomax); clear pluie_filtre_compomax; figure(1); orient('landscape'); figure(2); orient('landscape'); figure(3); orient('landscape'); for e=1:7; a=7-(e-1)+1; f=2*(a-1)+1; clear pluie_min pluie_max; pluie_min=zeros(17,41); pluie_max=zeros(17,41); pluie_min(:,:)=pluie_filtre_compomin1(f,:,:); pluie_max(:,:)=pluie_filtre_compomax1(f,:,:); for b=1:17; for c=1:41; if pluie_min(b,c)<0; pluie_min(b,c)=0; elseif pluie_min(b,c)>10; pluie_min(b,c)=10; end; if pluie_max(b,c)<0; pluie_max(b,c)=0; elseif pluie_max(b,c)>10; pluie_max(b,c)=10; end; end; end pluie_min(1,1)=-0.0001; pluie_min(1,2)=10.0001; pluie_max(1,1)=-0.0001; pluie_max(1,2)=10.0001; lat=[-10:2.5:30]; lon=[-70:2.5:30]'; figure(1); subplot(7,1,8-e); palette aa=contourf(lon,lat,pluie_min,[0:0.5:10],'LineStyle','none'); if e==1; set (gca,'XTick',[-180:60:180],'XTickLabel',[' 180';'120W';' 60W';' 0';' 60E';'120E';' 180'],'fontname','Arial','fontsize',6); else set (gca,'XTick',[-180:60:180],'XTickLabel',[' ';' ';' ';' ';' ';' '],'fontname','Arial','fontsize',6); end; set (gca,'YTick',[-10:10:40],'YTickLabel',[' ';' 0';'10N';'20N';'30N';' '],'fontname','Arial','fontsize',6); if e==4; co=colorbar; set (co,'xtick',[-20:10:20],'xticklabel',[-20:10:20],'fontname','Arial','fontsize',6); end; hold on; cartemonde1; set (gca,'tickDir','out'); axis equal; axis([-180 180 -10 40]); if e==7; title('Pluies IRD : Moyenne composite min (mode Rossby EOF2)','fontsize',8); end; text(-270,10,['day = ',num2str(f-21)],'fontname','Arial','fontsize',10); pos_vert=e/10; set (gca,'position',[0.2 pos_vert 0.5 0.1]); % *************************** figure(2); subplot(7,1,8-e); palette aa=contourf(lon,lat,pluie_max,[0:0.5:10],'LineStyle','none'); if e==1; set (gca,'XTick',[-180:60:180],'XTickLabel',[' 180';'120W';' 60W';' 0';' 60E';'120E';' 180'],'fontname','Arial','fontsize',6); else set (gca,'XTick',[-180:60:180],'XTickLabel',[' ';' ';' ';' ';' ';' '],'fontname','Arial','fontsize',6); end; set (gca,'YTick',[-10:10:40],'YTickLabel',[' ';' 0';'10N';'20N';'30N';' '],'fontname','Arial','fontsize',6); if e==4; co=colorbar; set (co,'xtick',[-20:10:20],'xticklabel',[-20:10:20],'fontname','Arial','fontsize',6); end; hold on; cartemonde1; set (gca,'tickDir','out'); axis equal; axis([-180 180 -10 40]); if e==7; title('Pluies IRD : Moyenne composite max (mode Rossby EOF2)','fontsize',8); end; text(-270,10,['day = ',num2str(f-21)],'fontname','Arial','fontsize',10); pos_vert=e/10; set (gca,'position',[0.2 pos_vert 0.5 0.1]); %******************************************** figure(3); subplot(7,1,8-e); palette diff=pluie_min-pluie_max; diff(1,1)=-5.01; diff(1,2)=5.01; aa=contourf(lon,lat,diff,[-5:0.5:5],'LineStyle','none'); if e==1; set (gca,'XTick',[-180:60:180],'XTickLabel',[' 180';'120W';' 60W';' 0';' 60E';'120E';' 180'],'fontname','Arial','fontsize',6); else set (gca,'XTick',[-180:60:180],'XTickLabel',[' ';' ';' ';' ';' ';' '],'fontname','Arial','fontsize',6); end; set (gca,'YTick',[-10:10:40],'YTickLabel',[' ';' 0';'10N';'20N';'30N';' '],'fontname','Arial','fontsize',6); if e==4; co=colorbar; set (co,'xtick',[-20:10:20],'xticklabel',[-20:10:20],'fontname','Arial','fontsize',6); end; hold on; cartemonde1; set (gca,'tickDir','out'); axis equal; axis([-180 180 -10 40]); if e==7; title('Pluies IRD : Differences composite min-max (mode Rossby EOF2)','fontsize',8); end; text(-270,10,['day = ',num2str(f-21)],'fontname','Arial','fontsize',10); pos_vert=e/10; set (gca,'position',[0.2 pos_vert 0.5 0.1]); end; figure(1); print -depsc2 composite_pluie_min_eof2a.eps; figure(2); print -depsc2 composite_pluie_max_eof2a.eps; figure(3); print -depsc2 composite_pluie_diff_eof2a.eps; close all figure(1); orient('landscape'); figure(2); orient('landscape'); figure(3); orient('landscape'); for e=1:7; a=7-(e-1)+7; f=2*(a-1)+1; clear pluie_min pluie_max; pluie_min=zeros(17,41); pluie_max=zeros(17,41); pluie_min(:,:)=pluie_filtre_compomin1(f,:,:); pluie_max(:,:)=pluie_filtre_compomax1(f,:,:); for b=1:17; for c=1:41; if pluie_min(b,c)<0; pluie_min(b,c)=0; elseif pluie_min(b,c)>10; pluie_min(b,c)=10; end; if pluie_max(b,c)<0; pluie_max(b,c)=0; elseif pluie_max(b,c)>10; pluie_max(b,c)=10; end; end; end pluie_min(1,1)=-0.0001; pluie_min(1,2)=10.0001; pluie_max(1,1)=-0.0001; pluie_max(1,2)=10.0001; lat=[-10:2.5:30]; lon=[-70:2.5:30]'; figure(1); subplot(7,1,8-e); palette aa=contourf(lon,lat,pluie_min,[0:0.5:10],'LineStyle','none'); if e==1; set (gca,'XTick',[-180:60:180],'XTickLabel',[' 180';'120W';' 60W';' 0';' 60E';'120E';' 180'],'fontname','Arial','fontsize',6); else set (gca,'XTick',[-180:60:180],'XTickLabel',[' ';' ';' ';' ';' ';' '],'fontname','Arial','fontsize',6); end; set (gca,'YTick',[-10:10:40],'YTickLabel',[' ';' 0';'10N';'20N';'30N';' '],'fontname','Arial','fontsize',6); if e==4; co=colorbar; set (co,'xtick',[0:2:10],'xticklabel',[0:2:10],'fontname','Arial','fontsize',6); end; hold on; cartemonde1; set (gca,'tickDir','out'); axis equal; axis([-180 180 -10 40]); if e==7; title('Pluies IRD : Moyenne composite min (mode Rossby EOF2)','fontsize',8); end; text(-270,10,['day = ',num2str(f-21)],'fontname','Arial','fontsize',10); pos_vert=e/10; set (gca,'position',[0.2 pos_vert 0.5 0.1]); % *************************** figure(2); subplot(7,1,8-e); palette aa=contourf(lon,lat,pluie_max,[0:0.5:10],'LineStyle','none'); if e==1; set (gca,'XTick',[-180:60:180],'XTickLabel',[' 180';'120W';' 60W';' 0';' 60E';'120E';' 180'],'fontname','Arial','fontsize',6); else set (gca,'XTick',[-180:60:180],'XTickLabel',[' ';' ';' ';' ';' ';' '],'fontname','Arial','fontsize',6); end; set (gca,'YTick',[-10:10:40],'YTickLabel',[' ';' 0';'10N';'20N';'30N';' '],'fontname','Arial','fontsize',6); if e==4; co=colorbar; set (co,'xtick',[0:2:10],'xticklabel',[0:2:10],'fontname','Arial','fontsize',6); end; hold on; cartemonde1; set (gca,'tickDir','out'); axis equal; axis([-180 180 -10 40]); if e==7; title('Pluies IRD : Moyenne composite max (mode Rossby EOF2)','fontsize',8); end; text(-270,10,['day = ',num2str(f-21)],'fontname','Arial','fontsize',10); pos_vert=e/10; set (gca,'position',[0.2 pos_vert 0.5 0.1]); %******************************************** figure(3); subplot(7,1,8-e); palette diff=pluie_min-pluie_max; diff(1,1)=-5.01; diff(1,2)=5.01; aa=contourf(lon,lat,diff,[-5:0.5:5],'LineStyle','none'); if e==1; set (gca,'XTick',[-180:60:180],'XTickLabel',[' 180';'120W';' 60W';' 0';' 60E';'120E';' 180'],'fontname','Arial','fontsize',6); else set (gca,'XTick',[-180:60:180],'XTickLabel',[' ';' ';' ';' ';' ';' '],'fontname','Arial','fontsize',6); end; set (gca,'YTick',[-10:10:40],'YTickLabel',[' ';' 0';'10N';'20N';'30N';' '],'fontname','Arial','fontsize',6); if e==4; co=colorbar; set (co,'xtick',[-5:1:5],'xticklabel',[-5:1:5],'fontname','Arial','fontsize',6); end; hold on; cartemonde1; set (gca,'tickDir','out'); axis equal; axis([-180 180 -10 40]); if e==7; title('Pluies IRD : Differences composite min-max (mode Rossby EOF2)','fontsize',8); end; text(-270,10,['day = ',num2str(f-21)],'fontname','Arial','fontsize',10); pos_vert=e/10; set (gca,'position',[0.2 pos_vert 0.5 0.1]); end; figure(1); print -depsc2 composite_pluie_min_eof2b.eps; figure(2); print -depsc2 composite_pluie_max_eof2b.eps; figure(3); print -depsc2 composite_pluie_diff_eof2b.eps;