GNU Radio教程 3.python块接收向量输入产生向量输出

本文详细介绍了如何修改PythonEmbeddedBlock以接受向量输入和输出,并探讨了输入输出的数据类型转换。内容包括设置模块属性以处理向量、处理向量长度不匹配的警告、理解Stream和Vector的索引差异、创建MaxHold函数以及实现多个输入输出向量端口的操作。通过实例展示了如何在GRC中构建和运行相应的流程图。
摘要由CSDN通过智能技术生成

1-2.2带向量的 Python 块

本教程描述了如何修改Python Embedded Block以接受向量输入和输出,以及向量和流之间的input_items向量索引有何不同。

首先,如图所示,创建模块并修改属性

由图可知,Python Embedded Block需要向量输入和输出。

1.使Python Embedded Block接受向量输入和输出

要求有三点:

    向量输入;

    向量输出;

    输入输出的数据类型需改为float(根据模块的输入输出颜色可知)。

双击模块并编辑源代码,

保存之后,将Max Hold Block接入流程图。

2. 向量长度不匹配的警告

Embedded Python Block有一个区别于其他Out of Tree 模块(OOT)的特点。在运行流程图之前,GRC 检查以确保所有连接的数据类型和向量大小匹配。

在这个过程中__init()__函数 中vectorSize的默认值为16,

vectorSize用于定义输入输出向量的大小

在判断流程图是否正确时。在这种情况下vectorSize=16。GRC 假设输入和输出端口是长度为 16 的向量,即使传入了不同的参数!(也就是说GRC判断时以默认参数为准) 下图显示了如何将大小为 128 的向量作为参数传入(传入参数与默认参数不一致)GRC 不会将其捕获为错误,但流程图一旦运行就会崩溃

或者,如果默认参数与其他块的向量大小不匹配,GRC 将显示错误。在这种情况下,代码中的默认向量长度为​​ 128,但传入的参数为 16:

3. Indexing Streams

对于一个流,可以使用port number和sample index来索引输入和输出。

只基于端口号的索引,返回所有的输入样本,例如:

返回端口 0 上的所有输入样本。

返回0端口的第四个样本。

流的索引可被概括为:

4.Indexing Vectors

索引向量时,输入input_items和输出output_items包含一个额外的维度。

基于portIndex的索引返回所有向量和样本的二维数组,例如:

基于portIndex和vectorIndex的索引返回样本的一维数组,例如:

基于portIndex、vectorIndex和sampleIndex的索引返回单个样本。

5.Creating Max Hold Function

修改work()函数,时期包含Creating Max Hold()函数。

首先,在所有input_items[0]的向量上添加一个循环:

计算向量的最大值:

在每一个输入样本上添加循环:

分配输出样本maxValue:

保存代码 (CTRL + S)。运行流程图。输出将显示两个正弦曲线,每 16 个样本应用一次最大保持:

6.多个输入输出向量端口

修改Max Hold Block模块来添加新的输入输出向量端口。

首先,按下图所示创建模块并修改属性。

编辑Max Hold Block的源代码,来增加新的输入输出向量端口。

将work()函数修改为在两个输入端口上输出max hold function:

添加一个外循环:

遍历所有端口;

保存代码并连接流程图:

运行流程图。现在将生成两个最大保持输出,一个用于噪声源,一个用于正弦波:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值