1 | function [mat_intensity_precip] = int2precip(mat_intensity, type, Longitudes, Latitudes)
|
---|
2 |
|
---|
3 | %int2precip est une fonction permettant de passer de donnees d'intensites
|
---|
4 | %en donnees de precipitations en mm sur le domaine 0-20W 0-20N.
|
---|
5 |
|
---|
6 | %
|
---|
7 | %+
|
---|
8 | %
|
---|
9 | % ============
|
---|
10 | % int2precip.m
|
---|
11 | % ============
|
---|
12 | %
|
---|
13 | % .. function:: int2precip(mat_intensity, type, Longitudes, Latitudes)
|
---|
14 | %
|
---|
15 | % DESCRIPTION
|
---|
16 | % ===========
|
---|
17 | %
|
---|
18 | % - Donnees d'entrees :
|
---|
19 | %
|
---|
20 | % * mat_intensity : Matrice contenant les intensites sur la zone 0-20W et
|
---|
21 | % 0-20N, de dimension longitudes, latitudes si elle est 2D ou temps,
|
---|
22 | % longitudes, latitudes si elle est 3D.
|
---|
23 | % * type : Type de formules a utiliser, 'global' pour utiliser la meme
|
---|
24 | % sur l'ensemble du domaine ou 'regional' pour utiliser les formules
|
---|
25 | % sur les 4 sous regions etudies.
|
---|
26 | % * Longitudes (si type = 'regional') : Variable de longitudes des
|
---|
27 | % donnees.
|
---|
28 | % * Latitudes (si type = 'regional') : Variable de latitudes des
|
---|
29 | % donnees.
|
---|
30 | %
|
---|
31 | % - Donnees de sorties :
|
---|
32 | %
|
---|
33 | % * mat_intensity_precip : Matrice de donnees de precipitations dont les
|
---|
34 | % dimensions sont celle de la matrice d'intensites initiales.
|
---|
35 | %
|
---|
36 | % Cette fonction permet de passer de donnees d'intensites en donnees de
|
---|
37 | % precipitations en mm sur le domaine 0-20W 0-20N.
|
---|
38 | %
|
---|
39 | % EXAMPLES
|
---|
40 | % ========
|
---|
41 | %
|
---|
42 | % Voir la 'demo'.
|
---|
43 | %
|
---|
44 | % SEE ALSO
|
---|
45 | % ========
|
---|
46 | %
|
---|
47 | % :ref:`data_msg`
|
---|
48 | %
|
---|
49 | % :ref:`varamma_startup.m`
|
---|
50 | %
|
---|
51 | % :func:`MSGbuildfullfilename`
|
---|
52 | % :func:`MSGread`
|
---|
53 | % :func:`intensityMSG_day`
|
---|
54 | % :func:`intensityMSG_concat`
|
---|
55 | %
|
---|
56 | % :func:`nonprecipperiods`
|
---|
57 | % :func:`missingdaytonan`
|
---|
58 | %
|
---|
59 | % TODO
|
---|
60 | % ====
|
---|
61 | %
|
---|
62 | % use :func:`extractedmatrixdata`
|
---|
63 | % use :func:`spatialresolution`
|
---|
64 | %
|
---|
65 | % more explanation on demo
|
---|
66 | %
|
---|
67 | % demo wih simulation
|
---|
68 | %
|
---|
69 | % EVOLUTIONS
|
---|
70 | % ==========
|
---|
71 | %
|
---|
72 | % $Id$
|
---|
73 | %
|
---|
74 | % $URL$
|
---|
75 | %
|
---|
76 | % - jaclod 2011-07-29
|
---|
77 | %
|
---|
78 | % * Creation.
|
---|
79 | %
|
---|
80 | %-
|
---|
81 |
|
---|
82 | % Application des formules pour passer des intensites en precipitations
|
---|
83 | % (formules basees sur la validation croisee entre les intensites obtenues
|
---|
84 | % par l'analyse des donnees MSG et des donnees EPSAT sur une zone de -20 a
|
---|
85 | % 0 en longitudes et de 0 a 20 en latitudes. Dans chaque cas, la formule
|
---|
86 | % moyenne est obtenue a partir des proches resultats pour un domaine donnee
|
---|
87 | % des regressions lineaires, cf. MSGanalysiscrossvalidation).
|
---|
88 | switch type
|
---|
89 |
|
---|
90 | case 'global'
|
---|
91 | % Dans ce cas, on souhaite appliquer la meme formule a l'ensemble
|
---|
92 | % du domaine (0-20W et 0-20N). Nous ne gardons que le facteur
|
---|
93 | % d'echelle, pour garder les precipitations nulles,sur la formule
|
---|
94 | % moyenne suivante :
|
---|
95 | % precipitations (mm) = 0.0327 * intensites + 1.02.
|
---|
96 | mat_intensity_precip = 0.0327 * mat_intensity;
|
---|
97 |
|
---|
98 | case 'regional'
|
---|
99 | % Dans ce cas, on souhaite appliquer la formule sur differents
|
---|
100 | % domaines etudies (Il s'agit des regions 10-20W 10-20N, 10-20W
|
---|
101 | % 0-10N, 0-20W 5-10N et enfin 0-20W 0-5N).
|
---|
102 |
|
---|
103 | % Initialisation de la matrice de donnees de precipitations.
|
---|
104 | mat_intensity_precip = zeros(size(mat_intensity));
|
---|
105 |
|
---|
106 | % On applique le facteur d'echelle de la formule moyenne
|
---|
107 | % correspondante a chaque region.
|
---|
108 | % Region 10-20W 10-20N :
|
---|
109 |
|
---|
110 | % Recuperation des indices des bornes de la region.
|
---|
111 | indlonmin = find(Longitudes >= -20,1,'first');
|
---|
112 | indlonmax = find(Longitudes <= -10,1,'last');
|
---|
113 | indlatmin = find(Latitudes >= 10,1,'first');
|
---|
114 | indlatmax = find(Latitudes <= 20,1,'last');
|
---|
115 |
|
---|
116 | % Application, pour cette region, du facteur de la formule
|
---|
117 | % moyenne :
|
---|
118 | % Precipitations (mm) = 0.028035 * intensites + 0.66.
|
---|
119 | if size(size(mat_intensity),2)==3;
|
---|
120 |
|
---|
121 | % Matrice 3D avec une premiere dimension temporelle.
|
---|
122 | mat_intensity_precip(:,indlonmin:indlonmax,indlatmin:indlatmax) = 0.028035 * mat_intensity(:,indlonmin:indlonmax,indlatmin:indlatmax);
|
---|
123 |
|
---|
124 | elseif size(size(mat_intensity),2)==2;
|
---|
125 |
|
---|
126 | % Matrice 2D.
|
---|
127 | mat_intensity_precip(indlonmin:indlonmax,indlatmin:indlatmax) = 0.028035 * mat_intensity(indlonmin:indlonmax,indlatmin:indlatmax);
|
---|
128 |
|
---|
129 | else
|
---|
130 | error('Les donnees d''intensites doivent etre dans une matrice 2D ou 3D avec une premiere dimension temporelle.')
|
---|
131 |
|
---|
132 | end
|
---|
133 |
|
---|
134 | % Region 0-10W 10-20N :
|
---|
135 |
|
---|
136 | % Recuperation des indices des bornes de la region.
|
---|
137 | indlonmin = find(Longitudes >= -10,1,'first');
|
---|
138 | indlonmax = find(Longitudes <= 0,1,'last');
|
---|
139 | indlatmin = find(Latitudes >= 10,1,'first');
|
---|
140 | indlatmax = find(Latitudes <= 20,1,'last');
|
---|
141 |
|
---|
142 | % Application, pour cette region, du facteur de la formule
|
---|
143 | % moyenne :
|
---|
144 | % Precipitations (mm) = 0.028126 * intensites + 0.55.
|
---|
145 | % (On remarque que cette formule, ne change pas beaucoup par
|
---|
146 | % rapport a la precedent qui est a la meme latitude. La constante
|
---|
147 | % change probablement a cause des precipitations sous-estime avec
|
---|
148 | % notre analyse sur l'ocean).
|
---|
149 | if size(size(mat_intensity),2)==3;
|
---|
150 |
|
---|
151 | % Matrice 3D avec une premiere dimension temporelle.
|
---|
152 | mat_intensity_precip(:,indlonmin:indlonmax,indlatmin:indlatmax) = 0.028126 * mat_intensity(:,indlonmin:indlonmax,indlatmin:indlatmax);
|
---|
153 |
|
---|
154 | elseif size(size(mat_intensity),2)==2;
|
---|
155 |
|
---|
156 | % Matrice 2D.
|
---|
157 | mat_intensity_precip(indlonmin:indlonmax,indlatmin:indlatmax) = 0.028126 * mat_intensity(indlonmin:indlonmax,indlatmin:indlatmax);
|
---|
158 |
|
---|
159 | else
|
---|
160 | % Erreur deja donnee.
|
---|
161 | end
|
---|
162 |
|
---|
163 | % Region 0-20W 5-10N :
|
---|
164 |
|
---|
165 | % Recuperation des indices des bornes de la region.
|
---|
166 | indlonmin = find(Longitudes >= -20,1,'first');
|
---|
167 | indlonmax = find(Longitudes <= 0,1,'last');
|
---|
168 | indlatmin = find(Latitudes >= 5,1,'first');
|
---|
169 | indlatmax = find(Latitudes <= 10,1,'last');
|
---|
170 |
|
---|
171 | % Application, pour cette region, du facteur de la formule
|
---|
172 | % moyenne :
|
---|
173 | % Precipitations (mm) = 0.0395 * intensites + 2.
|
---|
174 | if size(size(mat_intensity),2)==3;
|
---|
175 |
|
---|
176 | % Matrice 3D avec une premiere dimension temporelle.
|
---|
177 | mat_intensity_precip(:,indlonmin:indlonmax,indlatmin:indlatmax) = 0.0395 * mat_intensity(:,indlonmin:indlonmax,indlatmin:indlatmax);
|
---|
178 |
|
---|
179 | elseif size(size(mat_intensity),2)==2;
|
---|
180 |
|
---|
181 | % Matrice 2D.
|
---|
182 | mat_intensity_precip(indlonmin:indlonmax,indlatmin:indlatmax) = 0.0395 * mat_intensity(indlonmin:indlonmax,indlatmin:indlatmax);
|
---|
183 |
|
---|
184 | else
|
---|
185 | % Erreur deja donnee.
|
---|
186 | end
|
---|
187 |
|
---|
188 | % Region 0-20W 0-5N :
|
---|
189 |
|
---|
190 | % Recuperation des indices des bornes de la region.
|
---|
191 | indlonmin = find(Longitudes >= -20,1,'first');
|
---|
192 | indlonmax = find(Longitudes <= 0,1,'last');
|
---|
193 | indlatmin = find(Latitudes >= 0,1,'first');
|
---|
194 | indlatmax = find(Latitudes <= 5,1,'last');
|
---|
195 |
|
---|
196 | % Application, pour cette region, du facteur de la formule
|
---|
197 | % moyenne :
|
---|
198 | % Precipitations (mm) = 0.055 * intensites + 0.56.
|
---|
199 | if size(size(mat_intensity),2)==3;
|
---|
200 |
|
---|
201 | % Matrice 3D avec une premiere dimension temporelle.
|
---|
202 | mat_intensity_precip(:,indlonmin:indlonmax,indlatmin:indlatmax) = 0.055 * mat_intensity(:,indlonmin:indlonmax,indlatmin:indlatmax);
|
---|
203 |
|
---|
204 | elseif size(size(mat_intensity),2)==2;
|
---|
205 |
|
---|
206 | % Matrice 2D.
|
---|
207 | mat_intensity_precip(indlonmin:indlonmax,indlatmin:indlatmax) = 0.055 * mat_intensity(indlonmin:indlonmax,indlatmin:indlatmax);
|
---|
208 |
|
---|
209 | else
|
---|
210 | % Erreur deja donnee.
|
---|
211 | end
|
---|
212 |
|
---|
213 | otherwise
|
---|
214 | error('Le type d''application de formules ne peut qu''etre ''global'' ou ''regional''.')
|
---|
215 |
|
---|
216 | end
|
---|
217 |
|
---|
218 | end
|
---|
219 |
|
---|
220 | %!demo
|
---|
221 | %! [ij_intensity_concat, time_concat, Longitudes, Latitudes] = intensityMSG_concat('extracted', 0, 0, 0, 0, 0, 0, 2006, 08, 01, 08, 07);
|
---|
222 | %! [ij_intensity_concat_precip] = int2precip(ij_intensity_concat, 'global');
|
---|