LuaRadio介绍

news2024/11/19 23:25:45

介绍

LuaRadio是一个用于构建信号处理流程图的框架
在软件定义的无线电流图中,源和接收块倾向于实现某种I/O,如从SDR加密狗读取样本,或将样本写入IQ文件,而处理块倾向于计算,如滤波器和乘法器。image

数据类型说明

LuaRadio块具有与其输入和输出端口相关联的数据类型。例如,一个乘法器块可能支持名为in1和in2的复数值输入,并支持名为out的复数值输出。它还可以支持实值输入in1和in2,并支持实值输出out。与输入和输出端口相关联的每个数据类型集合称为类型签名。imageimage
LuaRadio为流图中的每个块自动选择正确的类型,以便在块之间的连接中输出和输入类型匹配。

关于采样率

LuaRadio块有一个与之相关的采样率,不需要人工强制设置(类似Gnuraido),下游区块继承并可能修改其上游区块的采样率。例如,插值块和抽取块将分别对采样率进行乘法和除法运算。image

关于流图的结束状态说明

虽然有些流程图可以描述连续运行的系统(例如,宽带FM广播电台接收器),但LuaRadio流程图不一定永远运行。如果一个源终止,当最后的样本在图中传播时,框架将优雅地折叠流图。image

与GnuRadio的对比

  • 目的
    LuaRadio不是GNU Radio的替代品,而是一个更倾向于脚本和原型的替代品,强调快速、无编译的块开发。

  • 体量对比
    GNU Radio往往有很大的空间占用。一个典型的二进制GNU Radio安装的重量超过100MB。当安装包含开发支持时,boost开发头文件和许多其他库和工具(gsl, blas, swig, orc等)可以再增加100MB或更多。
    在时间和依赖方面,GNU Radio也有很大的编译要求。GNU Radio框架及其模块的编译通常是缓慢的,并且由于对boost的依赖,可能是不稳定的。当底层GNU Radio或boost运行时更新时,编译版本的GNU Radio模块和应用程序可能以复杂的方式中断。这些模块和应用程序可能需要常规的重新编译(有时是按照特定的顺序),以便与更新后的库以及彼此正确链接。
    LuaRadio的总内存占用大约为1MB,它的块不需要编译。LuaRadio对非实时应用的依赖为零,并且可以在实时应用中使用liquid-dsp或VOLK进行加速。liquid-dsp共享LuaRadio对最小依赖的亲和力,并使嵌入式Linux平台更容易访问软件定义的无线电。

  • 协议对比
    GNU Radio使用GPL v3。
    LuaRadio的许可是MIT。

  • 扩展
    GNU Radio块通常是用c++编写的,并且往往有许多用于构建、Python绑定、图形编辑器绑定和测试的样板。这可以通过工具来缓解,例如gr_modtool,但对某些人来说,这可能会增加框架的不透明性。
    LuaRadio块是用纯Lua编写的,基本上没有样板文件,不需要编译或绑定。使用LuaRadio,脚本的便利性既适用于定义流程图,也适用于开发块。

  • 数据结构对比
    GNU Radio块每个只能支持一种类型签名,这就把块类型区分的问题推给了用户。GNU Radio已经开发了一个丰富的命名法,用于用类型签名注释它们的块名,使用像_cc和_ff这样晦涩的后缀,例如multiply_cc, multiply_ff, fir_filter_ccc, fir_filter_ccf, fir_filter_fff等。
    LuaRadio块可以支持多种类型签名。例如,MultiplyBlock和FIRFilterBlock可以同时接受复数值和实值的输入/输出类型,框架将根据流图中块的连接自动区分正确的类型签名。这有助于代码重用和整合,以及在定义流程图时的易用性。

  • 关于采样率
    GNU Radio要求用户手动指定需要它的每个块的采样率。一些块需要规范化参数(例如角频率),这也要求用户计算正确的规范化。
    LuaRadio在所有块之间自动传播采样率。这减少了块所需的配置量。

  • 性能对比
    一般来说,LuaRadio的性能与GNU Radio的性能处于同一级别。在计算成本较高的模块中,比如过滤器,LuaRadio的性能与GNU Radio相当,甚至略好一些。在其他情况下,LuaRadio的性能可能在GNU Radio的30%到80%之间,但这通常是针对已经处于非常高吞吐量领域的块。在少数情况下,LuaRadio的性能超过了GNU Radio的性能。
    总体来说GNU Radio的总体性能仍然优于LuaRadio。

  • 成熟度
    GNU Radio拥有更大的社区、更多的模块、更多的硬件支持和更成熟的代码库。
    LuaRadio没有像GNU Radio Companion (GRC)那样的图形流图编辑工具。

例子-混频两个单音信号

  • lua代码-test.lua
local radio = require('radio')

-- Blocks
local source1 = radio.SignalSource('cosine', 125e3, 1e6) -- 125 kHz cosine source, sampled at 1 MHz
local source2 = radio.SignalSource('cosine', 75e3, 1e6)  -- 75 kHz cosine source, sampled at 1 MHz
local mixer = radio.MultiplyBlock()                      -- Multiply block
local throttle = radio.ThrottleBlock()                   -- Throttle block
local sink = radio.GnuplotSpectrumSink()                 -- Spectrum plotting sink
local top = radio.CompositeBlock()                       -- Top-level block to contain the flow graph

-- Connections
top:connect(source1, 'out', mixer, 'in1')
top:connect(source2, 'out', mixer, 'in2')
top:connect(mixer, throttle, sink)

-- Run it
top:run()
  • 运行脚本
./luaradio test.lua
  • 流图image

  • 频谱图image

  • 说明
    此脚本实现了将125KHz和75KHz的两个单音信号混频,得到200Khz和50Khz的和频和差频信号。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的问题解决

winR打开窗口输入 services.msc 停止mysql 找到data文件,清空其中全部文件。没有data文件,手动创建 ​ 输入 mysqld --remove mysql 移除服务; 注册服务,mysqld -install; 并开始初始化,mysqld --initi…

【FreeRTOS】【STM32】03 FreeRTOSConfig.h头文件简介与修改

基于[野火]《FreeRTOS%20内核实现与应用开发实战—基于STM32》.pdf FreeRTOSConfig.h头文件是FreeRTOS各项功能的打开与关闭 FreeRTOSConfig.h头文件简介 之前也说过了,FreeRTOSConfig.h文件可以添加在工程中任意文件夹,只需要在路径中添加好了就行。…

修炼k8s+flink+hdfs+dlink(四:k8s概念)

一:概念 1. 概述 1.1 kubernetes对象. k8s对象包含俩个嵌套对象字段。 spec(规约):期望状态 status(状态):当前状态 当创建对象的时候,会按照spec的状态进行创建,如果…

某省医保局:强化医保信息化高质量建设,提升数字医疗保障服务能力

自2018年起,国家医保信息化工作启动,2020年10月完成了国家医保信息平台主体建设,随后国家医保信息化工作重点转向地方落地应用。在国家医保局的指导下,全国各地省市级医保部门制定了医疗保障信息化工作目标。 东北某省作为医保信息…

java日志框架详解-Log4j2

一、概述 Apache Log4j 2 (Log4j – Apache Log4j 2)是对Log4j的升级,它比其前身Log4j 1.x提供了重大改进,并参考了Logback中优秀的设计,同时修复了Logback架构中的一些问题。被誉为是目前最优秀的Java日志框架&#x…

【智慧燃气】智慧燃气解决方案总体概述--终端层、网络层

关键词:智慧燃气、智慧燃气系统、智慧燃气平台、智慧燃气解决方案、智慧燃气应用、智能燃气 智慧燃气解决方案是基于物联网、大数据、云计算、移动互联网等先进技术,结合燃气行业特征,通过智能设备全面感知企业生产、环境、状态等信息的全方…

合并单元格,并且动态合并单元格,合并相同值的单元格,vue2项目

element-ui 合并行或列 table :span-method&#xff08;行合并&#xff09;_elementui合并列_Take^that的博客-CSDN博客 <script>export default {data(){return {spanArr:[],pos:null,tableData:[},mounted(){this.getSpanArr(this.tableData)},methods:{objectSpanMeth…

基于若依ruoyi-nbcio支持flowable流程增加自定义业务表单(二)

之前讲了自定义业务表单&#xff0c;现在讲如何与流程进行关联 1、后端部分 WfCustomFormMapper.xml <update id"updateCustom" parameterType"Object">update wf_custom_form set deploy_id #{customFormVo.deployId}, flow_name#{customFormVo.…

MovieLens:一个常用的电影推荐系统领域的数据集

MovieLens是一个常用的电影推荐系统领域的数据集&#xff0c;用于研究和开发推荐算法和机器学习模型。该数据集包含了用户对电影的评分、电影的信息以及用户的信息。以下是MovieLens数据集的完整介绍&#xff1a; MovieLens数据集版本&#xff1a; MovieLens数据集有多个版本…

华为认证 | HCIP-Data Center Network V1.0正式发布!

华为认证数通高级工程师HCIP-Data Center Network V1.0&#xff08;中文版&#xff09;自2023年9月28日起&#xff0c;正式在中国区发布。 01 发布概述 基于“平台生态”战略&#xff0c;围绕“云-管-端”协同的新ICT技术架构&#xff0c;华为公司打造了覆盖ICT领域的认证体系&…

Gossip协议是什么

Gossip协议是什么 Gossip protocol 也叫 Epidemic Protocol (流行病协议), 是基于流行病传播方式的节点或者进程之间信息交换的协议, 也被叫做流言算法, 八卦算法、疫情传播算法等等. 说到 Gossip 协议, 就不得不提著名的六度分隔理论. 简单地说, 你和任何一个陌生人之间所间…

如何做文献笔记

读论文的每一部分都要思考&#xff0c;从该部分中可以我获取到什么信息&#xff1f; 从标题中可以获取到的信息 A技术应用在B领域 B领域之前无人用过机器学习方法 B领域之前有人用过机器学习方法一个新的方法数据集合 论文每个地方从标题到章节都可以读到一些单词、句式进行积…

短视频账号矩阵系统源码saas===独立部署

前言&#xff1a; 短视频账号矩阵是指在不同的短视频平台上&#xff0c;一个个人或企业所拥有的账号数量和分布情况。由于不同的短视频平台受众人群和内容类型等因素不同&#xff0c;因此拥有更多账号可以在更广泛的受众中传播内容&#xff0c;提高曝光度和流量。短视频账号矩阵…

医院门诊排队叫号系统

医院门诊排队叫号系统 1、系统概述&#xff1a; 门诊分诊排队叫号系统是在医院各门诊候诊区域所使用的智能化分诊和排队叫号管理系统&#xff0c;系统可有效地解决病人就诊时排队的无序、医生工作量的不平衡、就诊环境嘈杂等问题。系统具有一级、二级分诊排队模式&#xff0c…

SpringBoot 对接 MinIO 实现文件上传下载删除

前言 MinIO 是一个开源的对象存储服务器&#xff0c;它可以存储大容量非结构化的数据&#xff0c;例如图片、音频、视频、日志文件、备份数据和容器/虚拟机镜像等。 Spring Boot 与 MinIO 的整合可以方便地实现文件的上传和下载等功能 在实际应用中&#xff0c;Spring Boot …

C# 人像卡通化 Onnx photo2cartoon

效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms;nam…

NLP项目:维基百科文章爬虫和分类【02】 - 语料库转换管道

一、说明 我的NLP项目在维基百科条目上下载、处理和应用机器学习算法。相关上一篇文章中&#xff0c;展示了项目大纲&#xff0c;并建立了它的基础。首先&#xff0c;一个 Wikipedia 爬网程序对象&#xff0c;它按名称搜索文章&#xff0c;提取标题、类别、内容和相关页面&…

【毕设选题】深度学习 机器视觉 车位识别车道线检测 - python opencv

0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过…

第二证券:如何选股票的龙头股?

在股票商场中&#xff0c;每个出资者的方针都是可以出资到那些未来可以表现出色并带领整个工作开展的龙头股。选股关于出资者来说非常要害&#xff0c;由于选股不妥或许会导致出资失利。那么&#xff0c;怎么选股票的龙头股呢&#xff1f;本文从多个角度进行剖析&#xff0c;协…

platformIO开发arduino

第一先安装arduino,再在arduino库里面安装第三方库。然后下载vscode,在vscode上安装platformIO&#xff0c;然后点击Quick Access下的Import Arduino Project 然后选择自己的arudino项目&#xff0c;一般在用户的Document下面 进入带有.ino后缀的文件夹里然后点击import就可以将…