有什么方法可以跟踪 GNU Radio 中的信号变化吗?

发布于 2024-10-18 10:49:54 字数 345 浏览 7 评论 0原文

我正在尝试使用 GNU Radio(也使用 Ettus USRP)跟踪和分析由于频道变化而导致的接收信号的变化。我想使用 GNU Radio 编写一个程序,以便能够跟踪接收到的信号的变化。

我想要跟踪的内容包括(但不限于):

  • 中心频率的变化
  • 接收功率的变化
  • 带宽
  • 功率峰值的

变化最终,我希望跟踪非常小的变化(即使是最小的变化)。

有人知道这是否可能吗?如果是这样,我该如何开始,以及在哪里可以找到这方面的信息?另外,这种类型的信息在基础 C++ 层中是否可用,或者我可以通过上层 python 层获取它吗?

谢谢。

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 started, 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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

高跟鞋的旋律 2024-10-25 10:49:54

如果您想在 gnuradio 中进行分析,那么您需要通过将信号处理块放在一起来完成。 http://gnuradio.org/doc/doxygen/modules 中给出了可用块的列表。 html

对于接收功率的简单情况,有一个 rms_cf 块,它看起来会将复数流转换为表示 rms 功率的浮点数流。然后,您可以使用Integrate_ff 块对它们进行求和,然后输出到文件。

例如,

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()

对于中心频率和带宽,也许您可​​以将一堆带通滤波器放在一起,并查看感兴趣的频率范围的各个部分中包含的功率,然后返回您想要的信息。查看可用块的列表。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文