Elaboradar 0.1
|
◆ eval_clean_beam()
Funzione per ripulire raggio.Utilizza (sigmaV, V) Analoga a clean_beam(const Eigen::VectorXd& beam_z, const Eigen::VectorXd& beam_w, const Eigen::VectorXd& beam_v,int i), ma restituisce un vettore di unsigned char.
Definizione alla linea 105 del file cleaner.cpp. 106{
107 const unsigned beam_size = beam_z.rows();
108 vector<unsigned char> res(beam_size, 0);
109 bool in_a_segment = false;
110 unsigned start = 0, end = 0;
111 unsigned segment_length;
112 bool before = false, after = false;
113 unsigned counter = 0;
114
115 for (unsigned ibin = 0; ibin < beam_size; ++ibin)
116 {
117//printf(" %4d %4d %6.2f %6.2f %10.6f ",iray,ibin , beam_z(ibin),beam_v(ibin),beam_w(ibin));
118 if (!in_a_segment)
119 {
120 /* search the first radar bin's segment to be cleaned*/
122 {
123//printf(" 1 ----- START SEGMENT ------");
124 in_a_segment = true;
125 start = ibin;
126 after = false;
127 before = false;
128 }
129 } else {
130 /* search the last radar bin's segment to be cleaned*/
131 if (beam_w(ibin) != W_threshold || beam_v(ibin) != bin_wind_magic_number || ibin == (beam_size - 1))
132 {
133 in_a_segment = false;
134 end = ibin - 1;
135 if (ibin == (beam_size - 1)) end = ibin; // beam ended
136 /* Fine trovata ora procedo alla pulizia eventuale */
137 segment_length = end - start;
138 counter = counter + (unsigned)(segment_length);
139
140 unsigned c_b=0;
141 unsigned c_a=0;
142 /* Cerco dati validi in Z prima del segmento */
143 for (int ib = ibin - 12; ib < (signed)ibin; ++ib)
145 c_b++;
146 if (c_b > 0.25*12) before = true;
147
148 /* Cerco dati validi in Z dopo il segmento */
149 for (unsigned ia = ibin + 1; ia <= ibin + 12; ++ia)
151 c_a++;
152 if (c_a > 0.25*12) after = true;
153
154//printf(" 0 ----- STOP SEGMENT ------ %4d -- %4d before %d %d after %d %d ",segment_length,counter, c_b,before, c_a, after);
156 segment_length >= max_segment_length || counter > 100)
157 {
158 /* qui pulisco */
159 // printf (" pulisco %d %d %d \n",segment_length, min_segment_length, max_segment_length);
160 for (unsigned ib = start; ib <= end; ++ib)
162 }
163 }
164// else printf(" 1 ");
165 }
166//printf("\n");
167 }
168 return res;
169}
const unsigned max_segment_length lunghezza massima segmento in celle se più lungo pulisce in ogni caso Definition cleaner.h:24 Referenzia bin_wind_magic_number, max_segment_length, min_segment_length, W_threshold, e Z_missing. |