GNU Radio创建qt time plot python OOT块

2024-06-01 21:04
文章标签 python qt 创建 radio time gnu plot oot

本文主要是介绍GNU Radio创建qt time plot python OOT块,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、创建自定义的 OOT 块
    • 1、安装相应依赖
    • 2、创建 OOT 块
    • 3、修改相关
    • 4、编译及安装 OOT 块
  • 二、测试
    • 1、grc 图
    • 2、运行结果
  • 三、资源自取


前言

官方提供的绘制时域波形的 block 名字叫做 QT GUI Time Sink,其底层实现是用 C++ 写的,但是我发现如果要是对收到的信号做一些其他的显示,例如在实现雷达测距的时候将 x 轴改为距离轴,y 轴改为主副瓣比,那么直接对 QT GUI Time Sink 这个模块做一些修改还是比较难的,因此就想通过 python OOT 实现一个简单的绘制时域波形的 block,并且这个 block 方便后面做自定义修改,例如修改成显示距离或者速度等等。


一、创建自定义的 OOT 块

1、安装相应依赖

  • Matplotlib:一个数据可视化库,提供了一个类似于 MATLAB 的绘图框架。
  • NumPy:一个提供多维数组对象和一系列针对数组操作的函数的库,它是几乎所有进行科学计算的Python软件包的核心库。
sudo apt install python3-pip
pip install matplotlib numpy

2、创建 OOT 块

参考官方教程 Creating Python OOT with gr-modtool 创建自定义的 OOT块

①、在 gr-customModule 目录下添加一个名为 Zadoff-Chu 的新块:

gr_modtool add my_time_plot

将显示块的类型:

GNU Radio module name identified: myModule
('sink', 'source', 'sync', 'decimator', 'interpolator', 'general', 'tagged_stream', 'hier', 'noblock')

②、my_time_plot 模块需要根据输入数据同步显示,因此这里选择 sync

Enter block type: sync

③、使用 Python 代码实现

Language (python/cpp): python
Language: Python
Block/code identifier: my_time_plot

④、输入版权所有者的名称或组织:

Please specify the copyright holder: gnep

⑤、输入采样率作为参数

Enter valid argument list, including default arguments: 
samp_rate = 32000.0

⑥、选择是否需要 QA 代码:

Add Python QA code? [Y/n] n

⑦、然后将创建或修改以下文件:

Adding file 'python/my_time_plot.py'...
Adding file 'grc/customModule_my_time_plot.block.yml'...
Editing grc/CMakeLists.txt...

相关配置如下图:
在这里插入图片描述

3、修改相关

my_time_plot.py 部分核心程序:

    def work(self, input_items, output_items):in0 = input_items[0]n_samples = len(in0)t = np.arange(0, n_samples) / self.sampling_rate  # 生成时间向量# Send data to the queueself.q.put((t, in0))return len(in0)

customModule_zcSequence.block.yml 部分核心配置:

parameters:
- id: samp_ratelabel: samp ratedtype: float#  Make one 'inputs' list entry per input and one 'outputs' list entry per output.
#  Keys include:
#      * label (an identifier for the GUI)
#      * domain (optional - stream or message. Default is stream)
#      * dtype (e.g. int, float, complex, byte, short, xxx_vector, ...)
#      * vlen (optional - data stream vector length. Default is 1)
#      * optional (optional - set to 1 for optional inputs. Default is 0)
inputs:
- label: indomain: streamdtype: float

详细代码及配置文件文末自取

4、编译及安装 OOT 块

1、该块需要编译和安装,确保目前位于 gr-customModule 目录中:

cd gr-customModule

2、如果 build/ 目录已存在,请将其删除:

rm -rf build/

3、创建 build/ 目录

mkdir build

4、进入 build 目录

cd build/ 

5、运行 cmake 来构建 makefile

cmake ..

6、编译模块

make

7、安装模块

sudo make install

8、更新 customModule 库的链接

sudo ldconfig 

二、测试

1、grc 图

这里用一个 10Hz 的信号源做测试,采样率设置大一些,设置成10 kHz
在这里插入图片描述

2、运行结果

官方 QT GUI Time Sink 显示内容:
在这里插入图片描述
自定义制作的 time plot 显示内容:
在这里插入图片描述

三、资源自取

链接:GNU Radio创建qt time plot python OOT块
在这里插入图片描述


我的qq:2442391036,欢迎交流!


这篇关于GNU Radio创建qt time plot python OOT块的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1022113

相关文章

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

idea中创建新类时自动添加注释的实现

《idea中创建新类时自动添加注释的实现》在每次使用idea创建一个新类时,过了一段时间发现看不懂这个类是用来干嘛的,为了解决这个问题,我们可以设置在创建一个新类时自动添加注释,帮助我们理解这个类的用... 目录前言:详细操作:步骤一:点击上方的 文件(File),点击&nbmyHIgsp;设置(Setti

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调