Elaboradar  0.1
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' clutter
float qVol(float dh, float dhst)
funzione componente qualita' focalizzazione fascio
float qBB(unsigned char bbc, float dr, float dt)
funzione componente qualita' beam blocking
float qAtt(float PIA)
funzione componente qualita' da path integrated attenuation
float qDist(float dr)
funzione componente qualita' distanza
funzioni componenti di qualita' radar semplici