discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Discuss-gnuradio] ofdm_chanest_vcvc_impl.cc


From: zs
Subject: [Discuss-gnuradio] ofdm_chanest_vcvc_impl.cc
Date: Sat, 24 Jan 2015 15:43:22 +0800 (CST)

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







reply via email to

[Prev in Thread] Current Thread [Next in Thread]