source: trunk/src/SIMULS_IRCAAM/composite_hgt500_AFR_eof2_1030.m @ 91

Last change on this file since 91 was 91, checked in by pinsard, 10 years ago

fix thanks to coding rules

File size: 11.4 KB
Line 
1%
2
3% initialisation
4clear;
5close all;
6
7status=load('hgt500_afr.mat','hgt500');
8hgt500=status.hgt500;
9clear status;
10
11ncload('zg_d.AfNQIVIV.197106-09.nc');
12
13% sélection du domaine géographique
14hgt500b=zeros(122,29,64,128);
15hgt500b(:,:,:,1:64)=hgt500(:,:,:,65:128);
16hgt500b(:,:,:,65:128)=hgt500(:,:,:,1:64);
17clear hgt500;
18hgt500=hgt500b;
19clear hgt500b;
20
21% on desaisonalise
22hgt1=permute(hgt500,[2 1 3 4]);
23hgt2(:,:,:)=nanmean(hgt1);
24clear hgt1;
25hgt3=reshape(hgt500, 3538,64,128);
26hgt4(:,:)=nanmean(hgt3);
27clear hgt3;
28
29for a=1:122;
30   for b=1:28;
31      for c=1:37;
32         for d=1:128;
33             hgt500(a,b,c,d)=hgt500(a,b,c,d)-(hgt2(a,c,d)-hgt4(c,d));
34         end;
35      end;
36   end;
37end;
38clear hgt2 hgt4;
39
40status=load('eof2_AFR_1030.txt');
41eof2_AFR_1030=status;
42clear status;
43
44% on met sous la forme annee mois
45hgt500_eof=reshape(eof2_AFR_1030,122,29);
46clear eof2_AFR_1030;
47
48% on calcule l ecart type sur la serie temporelle de l HGT500
49k=122*29;
50hgt500bis=reshape(hgt500_eof,k,1);
51hgt500bis=1.25*std(hgt500bis);
52
53% intialisation des tableaux
54hgt500_filtre_compomax=NaN*ones(50,31,64,128);
55hgt500_filtre_compomin=NaN*ones(50,31,64,128);
56
57compteurmax=0;
58compteurmin=0;
59
60% boucle sur les annees
61for a=1:29;
62   clear delta;
63   delta=zeros(122,1);
64   % boucle sur les jours : on prepare avant
65   for b=1:122;
66        if b>1;
67            delta(b)=hgt500_eof(b,a)-hgt500_eof(b-1,a);
68        end;
69   end;
70   % boucle sur les jours
71   for b=1:122;
72      % 1ere condition (laisser une marge de 10)
73      if (b>20 && b<112);
74% cas 1 : max deltas aprÚs negetifs et deltas avant postifs
75         if (delta(b+1)<0 && delta(b)>0 && hgt500_eof(b,a)>(hgt500bis));
76            compteurmax=compteurmax+1;
77            hgt500_filtre_compomax(compteurmax,1,:,:)=hgt500(b-20,a,:,:);
78            hgt500_filtre_compomax(compteurmax,2,:,:)=hgt500(b-19,a,:,:);
79            hgt500_filtre_compomax(compteurmax,3,:,:)=hgt500(b-18,a,:,:);
80            hgt500_filtre_compomax(compteurmax,4,:,:)=hgt500(b-17,a,:,:);
81            hgt500_filtre_compomax(compteurmax,5,:,:)=hgt500(b-16,a,:,:);
82            hgt500_filtre_compomax(compteurmax,6,:,:)=hgt500(b-15,a,:,:);
83            hgt500_filtre_compomax(compteurmax,7,:,:)=hgt500(b-14,a,:,:);
84            hgt500_filtre_compomax(compteurmax,8,:,:)=hgt500(b-13,a,:,:);
85            hgt500_filtre_compomax(compteurmax,9,:,:)=hgt500(b-12,a,:,:);
86            hgt500_filtre_compomax(compteurmax,10,:,:)=hgt500(b-11,a,:,:);
87
88            hgt500_filtre_compomax(compteurmax,11,:,:)=hgt500(b-10,a,:,:);
89            hgt500_filtre_compomax(compteurmax,12,:,:)=hgt500(b-9,a,:,:);
90            hgt500_filtre_compomax(compteurmax,13,:,:)=hgt500(b-8,a,:,:);
91            hgt500_filtre_compomax(compteurmax,14,:,:)=hgt500(b-7,a,:,:);
92            hgt500_filtre_compomax(compteurmax,15,:,:)=hgt500(b-6,a,:,:);
93            hgt500_filtre_compomax(compteurmax,16,:,:)=hgt500(b-5,a,:,:);
94            hgt500_filtre_compomax(compteurmax,17,:,:)=hgt500(b-4,a,:,:);
95            hgt500_filtre_compomax(compteurmax,18,:,:)=hgt500(b-3,a,:,:);
96            hgt500_filtre_compomax(compteurmax,19,:,:)=hgt500(b-2,a,:,:);
97            hgt500_filtre_compomax(compteurmax,20,:,:)=hgt500(b-1,a,:,:);
98
99            hgt500_filtre_compomax(compteurmax,21,:,:)=hgt500(b,a,:,:);
100            hgt500_filtre_compomax(compteurmax,22,:,:)=hgt500(b+1,a,:,:);
101            hgt500_filtre_compomax(compteurmax,23,:,:)=hgt500(b+2,a,:,:);
102            hgt500_filtre_compomax(compteurmax,24,:,:)=hgt500(b+3,a,:,:);
103            hgt500_filtre_compomax(compteurmax,25,:,:)=hgt500(b+4,a,:,:);
104            hgt500_filtre_compomax(compteurmax,26,:,:)=hgt500(b+5,a,:,:);
105            hgt500_filtre_compomax(compteurmax,27,:,:)=hgt500(b+6,a,:,:);
106            hgt500_filtre_compomax(compteurmax,28,:,:)=hgt500(b+7,a,:,:);
107            hgt500_filtre_compomax(compteurmax,29,:,:)=hgt500(b+8,a,:,:);
108            hgt500_filtre_compomax(compteurmax,30,:,:)=hgt500(b+9,a,:,:);
109            hgt500_filtre_compomax(compteurmax,31,:,:)=hgt500(b+10,a,:,:);
110% cas 2 : min deltas aprÚs positifs et deltas avant negatifs
111         elseif (delta(b+1)>0 && delta(b)>0 && delta(b-1)<0 && delta(b-2)<0 && hgt500_eof(b,a)<(-hgt500bis));
112            compteurmin=compteurmin+1;
113
114            hgt500_filtre_compomin(compteurmin,1,:,:)=hgt500(b-20,a,:,:);
115            hgt500_filtre_compomin(compteurmin,2,:,:)=hgt500(b-19,a,:,:);
116            hgt500_filtre_compomin(compteurmin,3,:,:)=hgt500(b-18,a,:,:);
117            hgt500_filtre_compomin(compteurmin,4,:,:)=hgt500(b-17,a,:,:);
118            hgt500_filtre_compomin(compteurmin,5,:,:)=hgt500(b-16,a,:,:);
119            hgt500_filtre_compomin(compteurmin,6,:,:)=hgt500(b-15,a,:,:);
120            hgt500_filtre_compomin(compteurmin,7,:,:)=hgt500(b-14,a,:,:);
121            hgt500_filtre_compomin(compteurmin,8,:,:)=hgt500(b-13,a,:,:);
122            hgt500_filtre_compomin(compteurmin,9,:,:)=hgt500(b-12,a,:,:);
123            hgt500_filtre_compomin(compteurmin,10,:,:)=hgt500(b-11,a,:,:);
124
125            hgt500_filtre_compomin(compteurmin,11,:,:)=hgt500(b-10,a,:,:);
126            hgt500_filtre_compomin(compteurmin,12,:,:)=hgt500(b-9,a,:,:);
127            hgt500_filtre_compomin(compteurmin,13,:,:)=hgt500(b-8,a,:,:);
128            hgt500_filtre_compomin(compteurmin,14,:,:)=hgt500(b-7,a,:,:);
129            hgt500_filtre_compomin(compteurmin,15,:,:)=hgt500(b-6,a,:,:);
130            hgt500_filtre_compomin(compteurmin,16,:,:)=hgt500(b-5,a,:,:);
131            hgt500_filtre_compomin(compteurmin,17,:,:)=hgt500(b-4,a,:,:);
132            hgt500_filtre_compomin(compteurmin,18,:,:)=hgt500(b-3,a,:,:);
133            hgt500_filtre_compomin(compteurmin,19,:,:)=hgt500(b-2,a,:,:);
134            hgt500_filtre_compomin(compteurmin,20,:,:)=hgt500(b-1,a,:,:);
135
136            hgt500_filtre_compomin(compteurmin,21,:,:)=hgt500(b,a,:,:);
137            hgt500_filtre_compomin(compteurmin,22,:,:)=hgt500(b+1,a,:,:);
138            hgt500_filtre_compomin(compteurmin,23,:,:)=hgt500(b+2,a,:,:);
139            hgt500_filtre_compomin(compteurmin,24,:,:)=hgt500(b+3,a,:,:);
140            hgt500_filtre_compomin(compteurmin,25,:,:)=hgt500(b+4,a,:,:);
141            hgt500_filtre_compomin(compteurmin,26,:,:)=hgt500(b+5,a,:,:);
142            hgt500_filtre_compomin(compteurmin,27,:,:)=hgt500(b+6,a,:,:);
143            hgt500_filtre_compomin(compteurmin,28,:,:)=hgt500(b+7,a,:,:);
144            hgt500_filtre_compomin(compteurmin,29,:,:)=hgt500(b+8,a,:,:);
145            hgt500_filtre_compomin(compteurmin,30,:,:)=hgt500(b+9,a,:,:);
146            hgt500_filtre_compomin(compteurmin,31,:,:)=hgt500(b+10,a,:,:);
147         end;
148      end;
149   end;
150end;
151
152% on fait le test de Student
153nb_value=min(compteurmin,compteurmax);
154student1=zeros(31,64,128);
155for a=1:31;
156    for b=1:64;
157        for c=1:128;
158           x=hgt500_filtre_compomin(1:nb_value,a,b,c);
159           y=hgt500_filtre_compomax(1:nb_value,a,b,c);
160           student1(a,b,c)=ttest(x,y,.1);
161        end;
162    end;
163end;
164disp(['iii : compteurmin =', int2str(compteurmin)]);
165disp(['iii : compteurmax =', int2str(compteurmax)]);
166hgt500_filtre_compomin=hgt500_filtre_compomin(1:compteurmin,:,:,:);
167hgt500_filtre_compomax=hgt500_filtre_compomax(1:compteurmax,:,:,:);
168
169% on fait la somme des valeurs de hgt500_filtreentiel sur le nbre d occurences
170% on obtent un tableau de la forme (jours-avant-aprÚs,lon,lat)
171hgt500_filtre_compomin1(:,:,:)=mean(hgt500_filtre_compomin);
172clear hgt500_filtre_compomin;
173hgt500_filtre_compomax1(:,:,:)=mean(hgt500_filtre_compomax);
174clear hgt500_filtre_compomax;
175
176x=[-10:1:10]';
177
178figure(1);
179orient('landscape');
180
181lat=lat';
182lon=lon-180;
183for e=1:7;
184       a=7-(e-1)+1;
185       f=2*(a-1)+1;
186       clear delta_hgt500_filtre_min;
187       delta_hgt500_filtre_min=zeros(64,128);
188       for b=1:64;
189          for c=1:128;
190             delta_hgt500_filtre_min(b,c)=hgt500_filtre_compomin1(f,b,c)-hgt500_filtre_compomax1(f,b,c);
191             if student1(f,b,c)==1;
192                 delta_hgt500_filtre_min(b,c)=delta_hgt500_filtre_min(b,c);
193             else
194 %               delta_hgt500_filtre_min(b,c)=NaN;
195             end;
196          end;
197       end;
198       for b=1:64;
199          for c=1:128;
200             if delta_hgt500_filtre_min(b,c)<-50;
201                  delta_hgt500_filtre_min(b,c)=-50;
202             elseif delta_hgt500_filtre_min(b,c)>50;
203                  delta_hgt500_filtre_min(b,c)=50;
204             end;
205          end;
206       end;
207       subplot(7,1,8-e);
208       palettecomplet
209       delta_hgt500_filtre_min(1,1)=-50.0001;
210       delta_hgt500_filtre_min(1,2)=50.0001;
211       fin=-30+24*2.5;
212
213       clear fin
214       fin=-10+16*2.5;
215       aa=contourf(lon,lat,delta_hgt500_filtre_min,[-50:5:50],'LineStyle','none');
216       if e==1;
217       set (gca,'XTick',[-180:60:180],'XTickLabel',[' 180';'120W';' 60W';'   0';' 60E';'120E';' 180'],'fontname','Arial','fontsize',6);
218       else
219      set (gca,'XTick',[-180:60:180],'XTickLabel',[' ';' ';' ';' ';' ';' '],'fontname','Arial','fontsize',6);
220       end;
221       set (gca,'YTick',[30:10:70],'YTickLabel',['30N';'40N';'50N';'60N';'70N'],'fontname','Arial','fontsize',6);
222       if e==4;
223          co=colorbar;
224          set (co,'ytick',[-50:5:50],'yticklabel',[-50:5:50],'fontname','Arial','fontsize',5);
225       end;
226       hold on;
227       cartemonde1;
228       set (gca,'tickDir','out');
229       axis equal
230       axis([-180 180 20 80]);
231       if e==7;
232          title('HGT500 composite EOF2 1030j simulation AFR','fontsize',8) ;
233       end;
234       text(-270,40,['day = ',num2str(f-21)],'fontname','Arial','fontsize',10);
235       pos_vert=e/10;
236       set (gca,'position',[0.2 pos_vert 0.5 0.1])
237end;
238print('-depsc2','composite_hgt500_afr_eof2_1030a.eps');
239
240figure(2);
241orient('landscape');
242
243for e=1:7;
244       a=7-(e-1)+1+7;
245       f=2*(a-1)+1;
246       clear delta_hgt500_filtre_min;
247       delta_hgt500_filtre_min=zeros(64,128);
248       for b=1:64;
249          for c=1:128;
250             delta_hgt500_filtre_min(b,c)=hgt500_filtre_compomin1(f,b,c)-hgt500_filtre_compomax1(f,b,c);
251             if student1(f,b,c)==1;
252                 delta_hgt500_filtre_min(b,c)=delta_hgt500_filtre_min(b,c);
253             else
254%                delta_hgt500_filtre_min(b,c)=NaN;
255             end;
256          end;
257       end;
258       for b=1:64;
259          for c=1:128;
260             if delta_hgt500_filtre_min(b,c)<-50;
261                  delta_hgt500_filtre_min(b,c)=-50;
262             elseif delta_hgt500_filtre_min(b,c)>50;
263                  delta_hgt500_filtre_min(b,c)=50;
264             end;
265          end;
266       end;
267       subplot(7,1,8-e);
268       palettecomplet
269       delta_hgt500_filtre_min(1,1)=-50.0001;
270       delta_hgt500_filtre_min(1,2)=50.0001;
271       fin=-30+24*2.5;
272
273       clear fin
274       fin=-10+16*2.5;
275       aa=contourf(lon,lat,delta_hgt500_filtre_min,[-50:5:50],'LineStyle','none');
276       if e==1;
277       set (gca,'XTick',[-180:60:180],'XTickLabel',[' 180';'120W';' 60W';'   0';' 60E';'120E';' 180'],'fontname','Arial','fontsize',6);
278       else
279      set (gca,'XTick',[-180:60:180],'XTickLabel',[' ';' ';' ';' ';' ';' '],'fontname','Arial','fontsize',6);
280       end;
281       set (gca,'YTick',[30:10:70],'YTickLabel',['30N';'40N';'50N';'60N';'70N'],'fontname','Arial','fontsize',6);
282       if e==4;
283          co=colorbar;
284          set (co,'ytick',[-40:20:40],'yticklabel',[-40:20:40],'fontname','Arial','fontsize',5);
285       end;
286       hold on;
287       cartemonde1;
288       set (gca,'tickDir','out');
289       axis equal
290       axis([-180 180 20 80]);
291       if e==7;
292          title('HGT500 composite EOF2 1030j simulation AFR','fontsize',8) ;
293       end;
294       text(-270,40,['day = ',num2str(f-21)],'fontname','Arial','fontsize',10);
295       pos_vert=e/10;
296       set (gca,'position',[0.2 pos_vert 0.5 0.1])
297end;
298print('-depsc2','composite_hgt500_afr_eof2_1030b.eps');
Note: See TracBrowser for help on using the repository browser.