Hi all:

Thank you in advance.I have read the source

code:ofdm_chanest_vcvc_impl.cc.But i have a question.

```
void
ofdm_chanest_vcvc_impl::get_chan_taps(
const gr_complex *sync_sym1,
const gr_complex *sync_sym2,
int carr_offset,
std::vector<gr_complex> &taps)
{
const gr_complex *sym = ((d_n_sync_syms == 2) ? sync_sym2 :
```

sync_sym1);

std::fill(taps.begin(), taps.end(), gr_complex(0, 0));

int loop_start = 0;

int loop_end = d_fft_len;

if (carr_offset > 0) {

loop_start = carr_offset;

} else if (carr_offset < 0) {

loop_end = d_fft_len + carr_offset;

}

```
for (int i = loop_start; i < loop_end; i++) {
if ((d_ref_sym[i-carr_offset] != gr_complex(0, 0))) {
taps[i-carr_offset] = sym[i] / d_ref_sym[i-carr_offset];
}
}
```

//Question:

//For example,when the carr_offset=2,then:

//loop_start =2;

//for example loop_end=64

// for (int i =2; i < loop_end; i++) {

if ((d_ref_sym[i-carr_offset] != gr_complex(0, 0))) {

taps[i-carr_offset] = sym[i] / d_ref_sym[i-carr_offset];

}

}

//

Now the taps only have values on taps[0]—taps[63-2],and taps[62]

taps[63] will be equal to zero.It means that the channel estimation have

value 0.It is wrong?

```
if (d_interpolate) {
for (int i = d_first_active_carrier + 1; i < d_last_active_carrier;
```

i += 2) {

taps[i] = taps[i-1];

}

taps[d_last_active_carrier] = taps[d_last_active_carrier-1];

}

```
if (d_eq_noise_red_len) {
// TODO
// 1) IFFT
// 2) Set all elements > d_eq_noise_red_len to zero
// 3) FFT
}
}
Thank you.
```

Best regards,

zswx