source: trunk/src/int2precip.m @ 327

Last change on this file since 327 was 327, checked in by pinsard, 13 years ago

change svn properties

  • Property svn:keywords set to URL
File size: 8.0 KB
Line 
1function [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).
88switch 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   
216end
217
218end
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');
Note: See TracBrowser for help on using the repository browser.