On Wed, 05 Jun 2019 at 16:20:12 -0700, Andrew Wolfram wrote: > I'm trying to alter the file ofdm_txrx.py ( > https://github.com/gnuradio/gnuradio/blob/master/gr-digital/python/digital/ofdm_txrx.py) > to get phase information from the carrier data so I can calculate an > approximate distance between two USRP devices. Ideally I want to grab > data from one of the blocks in the rx pipeline in the above python > file after the frequency/timing corrections have been applied. I tried > using the data after the serializer block, but it appears that this > has no phase information. I tried with the equalizer block output but > I'm not sure how to interpret its output data.
You cannot use the output of the equalizer block to get information on channel phase (or amplitude). That’s the point of equalization. A received subcarrier in a OFDM system is given by Y = H·X + N where H is the channel transfer function at the subcarrier, X is the sent symbol and N is noise (in frequency domain, i.e. after the FFT; note some assumption regarding synchronisation must hold, see [1]). The equalizer returns hat{X} = Y/hat{Y} where hat{·} denotes estimation. Note that the serializer block is a downstream block of the equalizer in the file you mention. > For my particular payload with 300 occupied carriers and an fft size > of 512 only the first 214 items of the equalizer output vector have > any phase information, so I'm somewhat confused. Any ideas? This might be related to the number of used pilots and their position. Do you use 86 pilots? How do you define their position? It’s rather odd that the position of carriers without phase information is not scattered. [1] https://ieeexplore.ieee.org/document/803501 _______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio