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实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

一文带你搞懂Python中__init__.py到底是什么

《一文带你搞懂Python中__init__.py到底是什么》朋友们,今天我们来聊聊Python里一个低调却至关重要的文件——__init__.py,有些人可能听说过它是“包的标志”,也有人觉得它“没... 目录先搞懂 python 模块(module)Python 包(package)是啥?那么 __in

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认

Python实现特殊字符判断并去掉非字母和数字的特殊字符

《Python实现特殊字符判断并去掉非字母和数字的特殊字符》在Python中,可以通过多种方法来判断字符串中是否包含非字母、数字的特殊字符,并将这些特殊字符去掉,本文为大家整理了一些常用的,希望对大家... 目录1. 使用正则表达式判断字符串中是否包含特殊字符去掉字符串中的特殊字符2. 使用 str.isa

python中各种常见文件的读写操作与类型转换详细指南

《python中各种常见文件的读写操作与类型转换详细指南》这篇文章主要为大家详细介绍了python中各种常见文件(txt,xls,csv,sql,二进制文件)的读写操作与类型转换,感兴趣的小伙伴可以跟... 目录1.文件txt读写标准用法1.1写入文件1.2读取文件2. 二进制文件读取3. 大文件读取3.1

使用Python实现一个优雅的异步定时器

《使用Python实现一个优雅的异步定时器》在Python中实现定时器功能是一个常见需求,尤其是在需要周期性执行任务的场景下,本文给大家介绍了基于asyncio和threading模块,可扩展的异步定... 目录需求背景代码1. 单例事件循环的实现2. 事件循环的运行与关闭3. 定时器核心逻辑4. 启动与停

基于Python实现读取嵌套压缩包下文件的方法

《基于Python实现读取嵌套压缩包下文件的方法》工作中遇到的问题,需要用Python实现嵌套压缩包下文件读取,本文给大家介绍了详细的解决方法,并有相关的代码示例供大家参考,需要的朋友可以参考下... 目录思路完整代码代码优化思路打开外层zip压缩包并遍历文件:使用with zipfile.ZipFil

Python处理函数调用超时的四种方法

《Python处理函数调用超时的四种方法》在实际开发过程中,我们可能会遇到一些场景,需要对函数的执行时间进行限制,例如,当一个函数执行时间过长时,可能会导致程序卡顿、资源占用过高,因此,在某些情况下,... 目录前言func-timeout1. 安装 func-timeout2. 基本用法自定义进程subp

Python实现word文档内容智能提取以及合成

《Python实现word文档内容智能提取以及合成》这篇文章主要为大家详细介绍了如何使用Python实现从10个左右的docx文档中抽取内容,再调整语言风格后生成新的文档,感兴趣的小伙伴可以了解一下... 目录核心思路技术路径实现步骤阶段一:准备工作阶段二:内容提取 (python 脚本)阶段三:语言风格调