# Ofdm channel estimation

**URL:** <https://www.ruby-forum.com/t/ofdm-channel-estimation/230928>\
**Category:** GNU Radio\
**Created:** [July 13, 2014, 1:07pm UTC](https://www.ruby-forum.com/t/ofdm-channel-estimation/230928 "2014-07-13T13:07:51Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![addis\_a](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c4cdca/32.png) [@addis\_a](https://www.ruby-forum.com/u/addis_a)\
**Post date:** [July 13, 2014, 1:07pm UTC](https://www.ruby-forum.com/t/ofdm-channel-estimation/230928/1 "2014-07-13T13:07:51Z")

</div>

Hi all:  
Have you ever using the  
gnuradio/gr-digital/examples/ofdm/rx\_ofdm.grc?And I change the  
rx\_ofdm.py as follows:  
self.connect((self.digital\_ofdm\_chanest\_vcvc\_0, 1),  
blocks.file\_sink(gr.sizeof\_gr\_complex \* fft\_len,  
‘channel-estimate.dat’))  
And i use the matlab:  
csi=read\_complex\_binary(‘channel-estimate.dat’);plot(1:64,real(csi(1:64,1)),‘rs-’)  
The result is attached.But I think the result is wrong.Have  
someone do the similar thing like me?Can we discuss this?  
Environement: 2 USRP N210 and SBX  
Thank you.  
Best regards,  
xd

---

<div class="post-metadata">

**Author:** ![xianda](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/x/b38774/32.png) [@xianda](https://www.ruby-forum.com/u/xianda)\
**Post date:** [July 14, 2014, 10:39am UTC](https://www.ruby-forum.com/t/ofdm-channel-estimation/230928/2 "2014-07-14T10:39:12Z")

</div>

On 07/13/2014 01:06 PM, xianda wrote:

> Hi all:  
> Have you ever using the  
> gnuradio/gr-digital/examples/ofdm/rx\_ofdm.grc?And I change the  
> rx\_ofdm.py as follows:  
> self.connect((self.digital\_ofdm\_chanest\_vcvc\_0, 1),  
> blocks.file\_sink(gr.sizeof\_gr\_complex \* fft\_len, ‘channel-estimate.dat’))  
> And i use the matlab:

Please read the fine manual:  
[GNU Radio Manual and C++ API Reference: gr::digital::ofdm\_chanest\_vcvc Class Reference](http://gnuradio.org/doc/doxygen/classgr_1_1digital_1_1ofdm __chanest__ vcvc.html#details).

The channel estimate is on a tag.

M

---

<div class="post-metadata">

**Author:** ![xianda](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/x/b38774/32.png) [@xianda](https://www.ruby-forum.com/u/xianda)\
**Post date:** [July 15, 2014, 11:19am UTC](https://www.ruby-forum.com/t/ofdm-channel-estimation/230928/3 "2014-07-15T11:19:07Z")

</div>

On 07/15/2014 09:39 AM, xianda wrote:

> Hi Martin:  
> Thank you for your kindly reply.  
> Another question I want to ask.  
> When I use the rx\_ofdm,I add a UHD:USRP  
> Source.(Environment: USRP N210)I know when the block Schmidl &Cox OFDM  
> synch. detect the signal,the port “detect” will output 1.And I test it.I  
> use the rx\_ofdm when I don’t use the tx\_ofdm.It means that no signal  
> exist.But I find 1 in the port “detect”.Why?When no signal exist,it  
> should output 0.Why I see 1 from it?

…bad luck? It’s not impossible to generate false alarms. What did you  
feed the block?

Martin

---

<div class="post-metadata">

**Author:** ![xianda](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/x/b38774/32.png) [@xianda](https://www.ruby-forum.com/u/xianda)\
**Post date:** [July 15, 2014, 12:52pm UTC](https://www.ruby-forum.com/t/ofdm-channel-estimation/230928/4 "2014-07-15T12:52:11Z")

</div>

Hi Martin:  
Thank you very much.But I test again and again,the  
rx\_detect don’t exist 1.And some little value approach 0 exists.But in  
the header stream chain some values exist.I think when 1 don’t exist  
there shouldn’t have value in the header stream chain.Why?  
Best regards,  
xd

---

<div class="post-metadata">

**Author:** ![xianda](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/x/b38774/32.png) [@xianda](https://www.ruby-forum.com/u/xianda)\
**Post date:** [July 15, 2014, 12:57pm UTC](https://www.ruby-forum.com/t/ofdm-channel-estimation/230928/5 "2014-07-15T12:57:33Z")

</div>

Oh,I guess that because i receive signal which at the frequency of  
2.45e9.It is like the wifi.May be I receive the wifi signal?Am i right?  
Thank you.

---

<div class="post-metadata">

**Author:** ![xianda](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/x/b38774/32.png) [@xianda](https://www.ruby-forum.com/u/xianda)\
**Post date:** [July 15, 2014, 9:56am UTC](https://www.ruby-forum.com/t/ofdm-channel-estimation/230928/6 "2014-07-15T09:56:09Z")

</div>

Hi Martin:  
Thank you for your kindly reply.  
Another question I want to ask.  
When I use the rx\_ofdm,I add a UHD:USRP  
Source.(Environment: USRP N210)I know when the block Schmidl &Cox OFDM  
synch. detect the signal,the port “detect” will output 1.And I test it.I  
use the rx\_ofdm when I don’t use the tx\_ofdm.It means that no signal  
exist.But I find 1 in the port “detect”.Why?When no signal exist,it  
should output 0.Why I see 1 from it?  
Thank you so much.  
Best regards,  
xd

At 2014-07-14 04:37:37, “Martin B.” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> On 07/13/2014 01:06 PM, xianda wrote: \>\> Hi all: \>\> Have you ever using  
> the \>\> gnuradio/gr-digital/examples/ofdm/rx\_ofdm.grc?And I change the \>\>  
> rx\_ofdm.py as follows: \>\>  
> self.connect((self.digital\_ofdm\_chanest\_vcvc\_0, 1), \>\>  
> blocks.file\_sink(gr.sizeof\_gr\_complex \* fft\_len,  
> ‘channel-estimate.dat’)) \>\> And i use the matlab: \> \>Please read the  
> fine manual:  
> [GNU Radio Manual and C++ API Reference: gr::digital::ofdm\_chanest\_vcvc Class Reference](http://gnuradio.org/doc/doxygen/classgr_1_1digital_1_1ofdm __chanest__ vcvc.html#details).
> 
> > The channel estimate is on a tag. \> \>M \>  
> > \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ \>Discuss-gnuradio  
> > mailing list \>[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> > [https://lists.gnu.org/mailman/listinfo/discuss-gnuradi](https://lists.gnu.org/mailman/listinfo/discuss-gnuradi)

---

<div class="post-metadata">

**Author:** ![xianda](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/x/b38774/32.png) [@xianda](https://www.ruby-forum.com/u/xianda)\
**Post date:** [July 15, 2014, 3:12pm UTC](https://www.ruby-forum.com/t/ofdm-channel-estimation/230928/7 "2014-07-15T15:12:24Z")

</div>

Hi Marcus:  
Thank you.Sorry for that.  
I wrongly use the read\_complex\_binary to analyse the  
detect at the second time.As I said(But I test again and again,the  
rx\_detect don’t exist 1.And some little value approach 0 exists.).If I  
use the read\_char\_binary to analyse the detect.There is 1 under every  
test.I said the truth.It isn’t stochastic problems maybe.And I attached  
my modified rx\_ofdm.grc.You can run it when no tx signal exist.And you  
will see r\_detect.dat will exist 1.(In matlab,use the  
read\_char\_binary.m).And a1.dat and a.dat isn’t null.(In matlab,use the  
read\_complex\_binary.m).You can test it.Thank you.  
Maybe I am wrong,please correct me.Thank you.  
Best regards,  
xd

---

<div class="post-metadata">

**Author:** ![xianda](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/x/b38774/32.png) [@xianda](https://www.ruby-forum.com/u/xianda)\
**Post date:** [July 15, 2014, 2:49pm UTC](https://www.ruby-forum.com/t/ofdm-channel-estimation/230928/8 "2014-07-15T14:49:44Z")

</div>

-----BEGIN PGP SIGNED MESSAGE-----  
Hash: SHA1

Hi Xianda,

how should we possibly tell? You expect us to be able to guess what is  
going wrong with your measurement, in an environment that is unknown  
to us, using a receiving antenna, modified flowgraph and tx signal  
that you did not really define.

As Martin said, if a detector outputs a 1, it might be a false alarm,  
also known as bad luck.

With stochastic problems, you always have to make a trade off between  
false alarm rate and type II errors. This is called receiver operating  
characteristic. With most detectors, you can adjust their parameters  
to accommodate your false alarm rate/detection rate needs.

Greetings,  
Marcus

On 15.07.2014 12:56, xianda wrote:

> > > “detect”.Why?When no signal exist,it should output 0.Why I see
> > > 
> > > blocks.file\_sink(gr.sizeof\_gr\_complex \* fft\_len,  
> > > ‘channel-estimate.dat’)) \>\> And i use the matlab: \> \>Please  
> > > read the fine manual:
> > > 
> > > >

[GNU Radio Manual and C++ API Reference: gr::digital::ofdm\_chanest\_vcvc Class Reference](http://gnuradio.org/doc/doxygen/classgr_1_1digital_1_1ofdm __chanest__ vcvc.html#details).

> > > > >

The channel estimate is on a tag. \> \>M \>

> > [Discuss-gnuradio Info Page](https://lists.gnu.org/mailman/listinfo/discuss-gnuradio)
> > 
> > \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ Discuss-gnuradio  
> > mailing list [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> > [Discuss-gnuradio Info Page](https://lists.gnu.org/mailman/listinfo/discuss-gnuradio)  
> > -----BEGIN PGP SIGNATURE-----  
> > Version: GnuPG v1  
> > Comment: Using GnuPG with Thunderbird - [http://www.enigmail.net/](http://www.enigmail.net/)

iQEcBAEBAgAGBQJTxSMPAAoJEBQ6EdjyzlHtRwEH+gPol6VhuE5BBqyq5GUD7H9P  
GhTufylcZhwuK5XLbZg1l5ZrcqrcJu8+CZRFmWuK2vIml4JhzVPre5gPSbYeRdFs  
e+aZ+mT3TN62oXXurvq+YM6mnBdewR2bi8h/DtkC77OkB5SvL6j6rREWSg73flCB  
/sh2hgHuQkJ8d2sh8ut0L1NF6rlbB3l+unwEgjGeLnDyH3fdFjfUDPlh7OiX318w  
GmfPasCiSMMmcSqXCIaXcHaaVF/cdip7Yd8LQACMKJvZBT9AvGh5i725z3Drytdl  
20B69ymrWD93bEdBjN7WAyAAvDJVbE6nWv1gXuUYfkbnGHwIaGomXfU8PQrPY14=  
=qRmz  
-----END PGP SIGNATURE-----

---

<div class="post-metadata">

**Author:** ![xianda](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/x/b38774/32.png) [@xianda](https://www.ruby-forum.com/u/xianda)\
**Post date:** [July 16, 2014, 12:27am UTC](https://www.ruby-forum.com/t/ofdm-channel-estimation/230928/9 "2014-07-16T00:27:16Z")

</div>

XD,

I’m having real trouble understanding what you’re doing.

Try this: generate white noise and put it into the detector. Do you see  
any 1s? I would guess no.

M
