GNU Radio官方教程系列(九):流和向量

llium2026-06-23 15:29:49
2 浏览 0 评论

本教程介绍了 向量 之间的区别。

上一篇教程 “打包位 ”介绍了如何将比特流打包成 字节字符 数据类型,以及如何将其解包回比特流。下一篇教程 “层级块和参数 ”演示了如何创建 分层块 以及如何使用 参数

在 GNU Radio 中,模块之间可以使用 向量 进行连接。 在每个时间点携带一个样本。 生成序列化数据。 必须具有数据类型,例如 Float32Byte

信号源 模块产生一个 复浮点数 32 数据流。该模块在每个时间点的输出包含 1 个复数样本:

图中显示,每个时间点都有一个复杂的样本。

向量

向量 在每个时间点携带多个样本。 向量 并行表示数据。 在每个时间点表示一个标量。 向量 在每个时间点表示一个数组。

GRC 使用较浅的颜色表示 数据流 ,使用较深的颜色表示 向量 输出:

流到向量流程图示例

以下示例描述了如何将数据流转换为向量,以及如何将向量转换回数据流。两个复杂的正弦数据流被转换为一个二元向量并显示出来,然后再转换回它们各自的独立数据流。

向工作区添加两个 信号源 模块:

编辑第二个 信号源 的参数,使其频率为 100,幅度为 0.1,以便在视觉上将其与第一个 信号源区 分开来:

点击 “确定” 接受参数。

找到 “流到向量” 模块,将其拖入工作区并将其连接到 “信号源” 模块:

找到 Vector to Stream 模块,并将三个 QT GUI Time Sink 模块添加到流程图中:

“向量转流”模块 会将向量序列化为流。 “向量转流”模块 输出的样本将交错排列。

编辑三个 QT GUI 时间接收器 模块的标题,以便彼此区分。首先,编辑连接到频率为 1000、幅度为 1 的 信号源的 模块,将其标题设置为 “信号源 A”

现在编辑连接到第二个 QT GUI 时间接收器, 信号源( “信号源 B” 频率为 100,幅度为 0.1)的 将其标题设置为

最后,编辑连接到 QT GUI Time Sink Vector to Stream “交错信号源” 模块的 ,将其标题设置为

运行流程图会显示三个时间接收器: 信号源 B、 信号源 A 、交错信号源交错信号源 时间接收器显示来自 信号源 A和信号源 B 的交错样本:

向量到流的流程图示例

以下示例对向量化数据进行解交错(或序列化),将其转换回两个流。

搜索 “向量到流” 模块,将其添加到工作区,并将其连接到 “流到向量” 模块:

右键单击并删除连接两个 信号源 模块和 QT GUI 时间接收器 模块的箭头:

将两个 Vector to Streams QT GUI Time Sink 模块移动并重新连接到 输出:

运行流程图。矢量化样本已重新分离成两个流:

下一个教程“ 层级块和参数 ”演示了如何创建 和使用 层级块

全部回复 (0)

0 / 1000
请遵守社区规范
暂无评论,快来抢沙发吧~
l

lium

社区创作者

帖子信息

所属板块GNU Radio
发布时间2026-06-23 15:29:49
2浏览
0点赞
0评论