流和向量(Streams and Vectors)

news/2024/11/19 21:28:21/文章来源:https://www.cnblogs.com/Jluosen/p/18555629

在GNU Radio的官方教程中,提到了两个重要的块连接方式:流和向量(Streams and Vectors)。具体的章节链接为:
🔗:流和向量 - GNU Radio
🔗:带有向量的 Python 块 - GNU Radio
官方文档对流和向量的概念和使用有着简介和直观的讲述,但对于两者之间的转化方法以及何时使用流或向量作为连接方式并没有清晰的讲述。

1. 流和向量之间的转化方法

1.1 流和向量的定义

GNU Radio 中的块可以使用向量进行连接。一个 stream 每个 time 实例携带 1 个 sample。流生成序列化数据。流必须具有数据类型,例如 Float 32 或 Byte

向量的每个时间实例携带多个样本。向量表示并行数据。流表示每个时间实例的标量。向量表示每个时间实例的数组。

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

1.2 流和向量的索引可视化

流的索引可视化:

向量的索引可视化:

1.3 流和向量的转化方法

官方文档里没有提供详细的转化过程解释,了解方法可以通过访问文档中的C语言代码,在work函数中查询数据转化的逻辑。不过这个方法考验读者代码能力,相关的模块链接如下:
🔗:Streams to Vector - GNU Radio
🔗:Vector to Stream - GNU Radio
🔗:Vector to Streams - GNU Radio
这里放入图解方便大家理解:

  1. 多个流输入转化为单个向量:

  2. 单个向量转化为单个流:

  3. 单个向量转化为多个流:过程和1相反。

三个过程中,单个向量转为单个流的过程可能不易理解,这里放入仿真:

不难发现signal为signal A和signal B的交叉出现,这样的作用就是保证输出的流能够数据连续且采样率不发生改变(相同的时间,获得的数据量一定)

2. 使用流或向量作为连接方式的判断方式

在GNU Radio中,选择使用流连接还是向量连接主要取决于数据处理的需求和应用场景。以下是一些指导原则:

2.1 使用流连接的情况:

  1. 实时处理:当需要实时处理单个样本数据时,流连接是更合适的选择。流连接能够以较低的延迟处理数据。
  2. 简单数据流:如果数据处理逻辑相对简单,且每个时间实例只需要处理一个样本,使用流连接会更直接。
  3. 低内存占用:流连接通常占用更少的内存,因为它只处理单个样本,而不是整个数组。

2.2使用向量连接的情况:

  1. 批量处理:当需要同时处理多个样本时,向量连接更为高效。它允许在一个时间实例中处理多个样本,适合于需要并行处理的场景。
  2. 复杂数据处理:如果算法需要对多个样本进行复杂的计算(如FFT、滤波等),向量连接可以减少函数调用的开销,提高性能。
  3. 数据聚合:在需要将多个流合并为一个数据集进行分析时,向量连接是理想的选择。

2.3 总结

  • 流连接适合实时、简单的单样本处理。
  • 向量连接适合批量、复杂的多样本处理。

本期主要提到了两个重要的块连接方式:流和向量(Streams and Vectors)。对于两者之间的转化方法以及何时使用流或向量作为连接方式进行了概述,作者能力有限,理解或者描述欠妥希望大家能在评论区中积极批评指正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/837007.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

接口测试之fiddler(10.2)

一、fiddler包安装 路径也尽量不要有中文安装步骤:略 二、Fiddler 简介 fiddler 是 C# 开发免费web调试工具之一,记录所有客户端和服务端常见的 http 以及 https 请求,可监视设断点,甚至修改输入输出数据,它还包含了一个强大的基于事件脚本的子系统,并且能使用 .net 语言…

JDK21新增特性

顺序集合(Sequenced Collections)提供了几个新的接口,用于实现有序的集合。在没有提供有序集合操作之前,我们进行集合的序列操作一般如下First element Last elementList list.get(0) list.get(list.size() - 1)Deque deque.getFirst() deque.getLast()SortedSet sortedSet.f…

NOIP2024加赛6

让人家来打模拟赛,被吊打了吧。一签三计数,罚坐了。 草莓 简单贪心,随便贪就过了。点此查看代码 #include<bits/stdc++.h> using namespace std; #define rep(i,s,t,p) for(int i = s;i <= t;i += p) #define drep(i,s,t,p) for(int i = s;i >= t;i -= p) #ifde…

java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法

java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法@目录一、记录文件相关操作方法二、代码1.读取路径返回List<File>2.读取路径返回List<String>3.删除文件夹4.删除文件 一、记录文件相关操作方法 二、代…

一些再也不敢了的行为

前言:考完 CSP-S 2024 才总结出来的各种离谱错误。本文不讨论类似于在有环图上跑拓扑排序这种错误,直接说会见祖宗的行为。进入考场前检查好准考证和身份证等必要物品,笔者因为这个原因 \(2024\) 年联合省选被困在了门外。由于不是正式选手,最终被放了进去。如果当前电脑运…

什么是水鱼?三分钟教会你

"水鱼"是广西人最喜欢玩的酒桌游戏,它属于扑克牌的一种玩法,经过不断改良升级而来。如果你在广西不会水鱼,那喝酒就没有了灵魂。虽然广西名族很多,水鱼玩法不一样,但是同一个框架,内容不同而已。比如有些地方黑桃花色最大,有些地方红桃花色最大,这种一般玩2,…

Oracle Linux 9.5 正式版发布 - Oracle 提供支持 RHEL 兼容发行版

Oracle Linux 9.5 正式版发布 - Oracle 提供支持 RHEL 兼容发行版Oracle Linux 9.5 正式版发布 - Oracle 提供支持 RHEL 兼容发行版 Oracle Linux with Unbreakable Enterprise Kernel (UEK) & Red Hat compatible kernel (RHCK) 请访问原文链接:https://sysin.org/blog/o…

List集合按照由小到大排序或者由大到小排序

@目录背景原代码由小到大排序由大到小排序 背景原List<User>里面是无序的,比如从redis查找等情况,查出来的是无序的,现在想按照由小到大排序或者由大到小排序。原代码 List<User> list = new ArrayList<>(); list.add(new User(3, "c", new Dat…

pta两次大作业

PTA 两次大作业总结:详细分析与实践经验 前言 回顾这次的家具强电电路模拟程序大作业,它无疑是一次极具挑战的编程与设计经历。从最初简单的电路组件模拟,到后期复杂的多设备连接和精准的控制反馈,这个过程不仅让我掌握了许多技术技能,还在思维方式、问题解决能力以及系统…

mac安装maven3.8.8

问题描述 down了一个新应用, maven依赖总是加载不到, 本地仓库也能找到, 项目启动报错 org.apache.skywalking:apm-toolkit-trace:pom:5.0.0-RC-SNAPSHOT failed to transfer from http://0.0.0.0/ during a previous attempt. This failure was cached in the local repositor…

mac 安装maven

问题描述 down了一个新应用, maven依赖总是加载不到, 本地仓库也能找到, 项目启动报错 org.apache.skywalking:apm-toolkit-trace:pom:5.0.0-RC-SNAPSHOT failed to transfer from http://0.0.0.0/ during a previous attempt. This failure was cached in the local repositor…

一个基于 .NET 8.0 构建的简单、跨平台、模块化商城系统

前言 今天给大家分享一个基于 .NET 8.0 构建的开源免费(MIT License)、简单、跨平台、模块化的商城系统:Module Shop。 主要功能销售:订单、物流。 内容:首页配置、评论、回复。 配置:国家、用户、仓库、运费、高级设置。 商品:分类、品牌、单位、选项(销售属性)、属性…