开发者

Is there any way to keep track of signal changes in GNU Radio?

I'm trying to track and analyze changes to a received signal due to changes in the channel using GNU Radio (also using Ettus USRPs). I would like to write a program using GNU Radio to be able to keep track of changes in the received signal.

The things I would like to track include (but are not limited to):

  • changes in center frequency
  • changes in received power
  • changes in bandwidth
  • power spikes

Ultimately, I would love to track very small changes (even the smallest of changes).

Does anybody know if this is possible? If so, how I can get s开发者_运维知识库tarted, and where I can find information on this? Also, would this type of information be available in the base C++ layer or can I get it via the upper python layer?

Thanks.


If you want to do the analysis within gnuradio then you'll need to do it by putting signal processing blocks together. A list of the available blocks is given in http://gnuradio.org/doc/doxygen/modules.html.

For the simple case of received power there is a rms_cf block which looks like it converts a stream of complex numbers into a stream of floats representing the rms power. You then could sum them up with an integrate_ff block and then output to a file.

e.g.

from gnuradio import gr

incoming_signal = ???
alpha = ???
signal_to_power = gr.rms_cf(alpha) # I have no idea what alpha means here :(.
sumup = gr.integrate_ff(10000) # Decimate by factor of 10000
dst = gr.file_sink_f(gr.sizeof_float, "the_file_name")
tb = gr.top_block()
tb.connect(incoming_signal, signal_to_power, sumup, dst)
tb.run()

For the center frequency and bandwidth, maybe you could put together a bunch of bandpass filters and look at the power contained in various sections of the frequency range of interest and then back out the information you want. Have a look at the list of available blocks.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜