Elaboradar  0.1
 Tutto Classi Namespace File Funzioni Variabili Tipi enumerati (enum) Gruppi
Q_components.cpp
1 
2 /*
3  omstart Q_components.c
4  idx libreria componenti qualita'
5  contiene funzioni di qualita' relative a ciascun fattore di errore
6  rispetto a calcolaqual.c sostituisco il file bb_par.h con qual_par.h.
7 
8  q= 1.-(1.-qd)*(1.-qc)
9 
10  qd= qualita dato
11  qc=qualita' correzione
12 
13  se errore non corretto qc=0
14 
15  omend
16 */
17 
18 #include <Q_components.h>
19 #include <radarelab/algo/anaprop.h>
20 #include <stdlib.h>
21 #include <math.h> //file di sistema definisce costanti matematiche e richiama funzioni mat
22 #include <qual_par.h> //file creato da me, parametri qualita'
23 
24 
25 /*--------------------------------------*/
26  /* funzione qualita' da BB */
27 /*--------------------------------------*/
28 /*
29  omstart qBB
30  idx funzione qualita' relativa a beam blocking
31 
32  qd=1.-(pow((float)(bb)/(float)(BBMAX),1/1.5))
33  qc=fcBB*fcDt*fcDr*fcErrpt
34 
35  float qd; qual. dato non corretto
36  float qc; qual. correzione
37  float fcBB; comp. qual. corr. da BB
38  float fcDt; comp. qual. corr. da distanza temporale radiosondaggio
39  float fcDr; comp. qual. corr. da distanza spaziale radiosondaggio
40  float fcErrpt; comp. qual. corr. da errore puntamento antenna
41  omend
42 */
43 
44  float qBB(unsigned char bbc,float dr,float dt)
45 
46  //unsigned char bbc;
47  //float dr,dt; /* distanza spaziale radiosondaggio*/
48 
49 {
50 
51 float qd; /* qual. dato non corretto*/
52 float qc; /* qual. correzione*/
53 float fcBB; /* comp. qual. corr. da BB*/
54 float fcDt; /* comp. qual. corr. da distanza temporale radiosondaggio */
55 float fcDr; /* comp. qual. corr. da distanza spaziale radiosondaggio */
56 float fcErrpt; /* comp. qual. corr. da errore puntamento antenna*/
57 
58  if (bbc > BBMAX) bbc=BBMAX;
59  qd=1.-(pow((float)(bbc)/(float)(BBMAX),1/1.5));
60 
61  fcBB=1.-(pow((float)(bbc)/(float)(BBMAX),1/1.5));
62  if (dt > DTMAX) dt=DTMAX;
63  fcDt=exp(-(double)(dt)/DTLIM);
64  fcDr=exp(-(double)(dr)/DRLIM);
65  fcErrpt=1.-pow(ERRPT,1/1.5);
66 
67  qc=fcBB*fcDt*fcDr*fcErrpt;
68 
69  return (1.-(1.-qd)*(1.-qc));
70  // return (qd); // caso non corretto;
71 }
72 
73 /*--------------------------------------*/
74  /* funzione qualita' da Clutter */
75 /*--------------------------------------*/
76 
77 /*
78  omstart qCl
79  idx funzione qualita' relativa a clutter
80  funzione qualita' relativa a clutter
81  dipende dal valore di ritorno del controllo anaprop
82 
83  0 = dato ok qCl=1
84  1 = anaprop qCl=0.5
85  2= no data qCl=0
86  3= no control qCl=0.8
87  omend
88 */
89 
90 float qCl( unsigned char clc)
91 {
92  using namespace radarelab::algo;
93  switch(clc)
94  {
95  case ANAP_OK:
96  return (1.); // ok
97  case ANAP_YES:
98  return (0.5); // anaprop
99  case ANAP_NODAT:
100  return (0.); // no data
101  case ANAP_NOCONTROL:
102  return (0.8); // no control
103  }
104 
105  }
106 /*--------------------------------------*/
107  /* funzione qualita' da Distanza (per ora ricavata da Koistinen e Puhakka con parametri Robby) */
108 /*--------------------------------------*/
109 /*
110  omstart qDist
111  idx funzione qualita' relativa a distanza
112  qd=(exp(-(float)(BETA*dr/1000.)))
113  omend
114 */
115 
116  float qDist( float dr)
117  // float dr;
118 
119 {
120 
121  return (exp(-(float)(BETA*dr/1000.)));
122 
123 }
124 
125 /*--------------------------------------*/
126  /* funzione qualita' da errore volumetrico in anaprop */
127 /*--------------------------------------*/
128 /*
129  omstart qVol
130  idx funzione qualita' da errore volumetrico
131  funzione qualita' da errore volumetrico, approcio geometrico-ottico
132  qd=1.-sqrt(pow((1.-pow(dh/dhst,1/1.5)),2.))
133  omend
134 */
135 
136 float qVol( float dh, float dhst)
137 
138 // float dh,dhst;
139 
140 {
141 
142 
143 
144  return (1.-sqrt(pow((1.-pow(dh/dhst,1/1.5)),2.)));
145 
146 }
147 
148 /*--------------------------------------*/
149  /* funzione qualita' da attenuazione */
150 /*--------------------------------------*/
151 /*
152  omstart qAtt
153  idx funzione qualita' da attenuazione
154  funzione qualita' da attenuazione
155  qd=pow(10,-PIA/15.)
156  omend
157 */
158 
159  float qAtt(float PIA)
160 
161  //float PIA;
162 
163 {
164 
165  return (pow(10,-PIA/15.));
166 
167 }
168 /*--------------------------------------*/
169  /* funzione qualita' da errore vpr*/
170 /*--------------------------------------*/
171 /*
172  omstart qVpr
173  idx funzione qualita' da errore Vpr
174  funzione qualita' da errore Vpr
175 
176  qd=pow(10.,-(abs(dZ)+sdevZ)/15.0)
177  qc= 1.-pow(10.,-(abs(dZ)-2.0*sdevZ));
178  if (qc < 0) qc=0.0;
179 
180  float dZ correzione su Z
181  float sdevZ deviazione standard della correzione su Z
182  omend
183 */
184 
185 
186 /*
187  * @brief funzione componente qualita' da VPR
188  * @param dZ correzione
189  * @param stdev standard deviation della correzione
190 */
191  float qVpr(float dZ,float sdevZ)
192 
193  //float dZ,sdevZ;
194 
195 {
196  float qd,qc,eps;
197  eps=0.001;
198  qd= pow(10.,-(abs(dZ)+sdevZ)/15.0) ;
199  if (abs(dZ) < eps) qd=1.0;
200 
201  qc= 1.-pow(10.,-(abs(dZ)-2.0*sdevZ));
202  if (qc < 0) qc=0.0;
203 
204  return (1.- (1.-qd)*(1.-qc));
205 }
206 
float qCl(unsigned char clc)
funzione componente qualita&#39; clutter
funzioni componenti di qualita&#39; radar semplici
float qDist(float dr)
funzione componente qualita&#39; distanza
float qAtt(float PIA)
funzione componente qualita&#39; da path integrated attenuation
float qVol(float dh, float dhst)
funzione componente qualita&#39; focalizzazione fascio
float qBB(unsigned char bbc, float dr, float dt)
funzione componente qualita&#39; beam blocking