GNU Radio系列教程(三):初级篇之GNU Radio GRC流图

GNU Radio系列教程(四):初级篇之GNU Radio GRC采样率 本文用GNU Radio来直观的理解奈奎斯特采样定理。 阅读详情
AI摘要

本文是GNU Radio系列教程第三篇,介绍GRC流图。目标是用标准模块创建GRC程序,学习调试、理解模块作用及使用文档。需掌握git基础、安装指定版本GNU Radio。讲解了GRC主界面,介绍搜索模块、修改属性、搭建流图等基本操作,还给出了简单和稍复杂流图示例及有用链接。

本文的目标:

(1)使用GNU Radio的标准模块来创建流图GRC程序

(2)学习如何在GRC的模块之间调试、解决问题

(3)理解GRC中的采样模块和限流模块的作用

(4)学习如何使用GNU Radio的文档来理解模块的功能

需要具备的基础知识:

(1)关于git的一些基础知识

(2)安装好GNU Radio 3.7或3.8或更新的版本

(3)GNU Radio系列教程(二):初级篇之GNU Radio介绍

目录

一、开始理解什么是GRC

二、GRC的基本操作方法

1、搜索模块

2、修改模块的属性

3、搭建第一个GRC流图

三、有用链接


一、开始理解什么是GRC

在GNU Radio系列教程(二):初级篇之GNU Radio介绍-优快云博客中,我们已经看到与通用的射频前端配合,GNU Radio包含了许多通信组件模块,是一个可以用来研发无线通信系统的集成工具库。在本文中,我们将介绍如何使用GRC(gnuradio-companion的简写,GNU Radio的图形化界面编程工具,类似于simulink)来创建不同的通信程序。简单来说,GRC是一种帮助我们用图形化的形式来创建python脚本程序的工具。

首先,看一下GRC的主界面。主界面包括五个部分:

(1)界面右侧的GNU Radio的模块库,用于调用已集成到GRC中的模块

(2)GRC的工具栏,用于GRC程序的打开、创建、编译、执行等操作

(3)GRC的终端,用于显示GRC程序,将模块拖拽到此处,用线将不同的模块连接起来,形成通信程序。

(4)工作空间,用于显示GRC程序运行过程中的调试信息

(5)变量,用于显示GRC程序中的变量名称及其数值

本文为了手把手教你如何使用GRC,建议你可以在阅读的同时,能够停下来做一些实践,例如新建一个文档、拖拽模块,不同模块之间连线,等等。学习GNU Radio的最好的方法就是多动手、多实践。碰到问题,在“工作空间”中查看错误信息,寻找解决方法去尝试解决问题。首先,最简单的,就是如何打开GNU Radio的GRC,你需要在Ubuntu中打开一个终端(快捷键是同时按下,ctrl、alt和字母t三个按键),然后输入以下命令后点击回车键,

gnuradio-companion

如果这样操作,你无法正常打开GRC,那么可能你的GNU Radio安装有些问题。

GNU Radio 教程:创建一个简单的信号源 四、添加模块,用ctrl+F搜索 信号源模块(signal sources)限频模块(Throttle)频率终端(Frequency sink)时间终端(time sink),双击或者拖动模块添加至主界面。五、单击singal sources右端的端子和throttle右边的端子是两个模块连接在一起。九、把鼠标放在曲线的窗口上单击然后滚动滚轮可以调整量程如图。七、单击第一个图标生成流图,然后点击开始按钮开始运行。三、点击硬盘图标保存文件在桌面。六、如图将每个模块连接在一起。二、打开流图默认界面如图。 阅读详情

相关推荐

GNU Radio教程1

GNU Radio教程1

m0_43430630的博客 6970

GNU Radio系列教程(七):初级篇之GNU Radio GRC PSK调制解调

在正式进行时钟恢复之前,我们先看看到底什么是码间干扰ISI。我们可以通过symbol_sampling.grc流图程序来观察什么是码间干扰。在symbol_sampling.grc流图程序中,我们用“Vector Source”模块生成了四组序列,每组都是100位0、1组成的序列。在该程序中,第一部分是通过使用“Interpolation FIR Filter”模块实现sps倍过采样(例如这里sps=4,Interpolation参数为4),并使用了一个均方根升余弦滤波器。

无线通信实验室 2万+

GNU Radio系列教程(五):初级篇之GNU Radio GRC AM发射与接收

本文用GNU Radio来实现AM发射和接收。

无线通信实验室 1万+

GNU Radio系列教程(六):初级篇之GNU Radio GRC 硬件使用实例之信号频谱分析

在使用GNU Radio来做的一些接收程序中,最具代表性的一个就是频谱分析仪程序。这个程序可以用来验证你的设备是否可以正常工作。

无线通信实验室 1万+

GNU Radio系列教程(一):什么是GNU Radio?为什么我需要用GNU Radio?

目录 一、什么是软件无线电? 二、GNU Radio到底能做什么事情? 三、我如果不精通编程,还能用GNU Radio吗? 四、GNU Radio使用需要授权吗? 五、基于GNU Radio,人们已经做了取得了哪些成果? 六、数字信号处理、基带、时钟同步…这些名词是什么意思? 七、有用的链接和联系方式 GNU Radio是一个免费的开源软件工具包,该工具包提供了可用于软件无线电的信号处理模块。基于一些通用的射频前端设备,该工具包可以用来实现软件无线电系统。此外,该工具包也可以用于单纯...

无线通信实验室 1万+

GNU Radio系列教程(九):中级篇之GNU Radio GRC流图生成的Python脚本

本文介绍通过GRC流图生成的python脚本的基本框架和主要函数。

无线通信实验室 5681

GNU Radio系列教程(八):初级篇之GNU Radio GRC BPSK调制解调

本文是在“GNU Radio系列教程(七):初级篇之GNU Radio GRC PSK调制解调”的基础上,给出BPSK调制解调的实例。BPSK与QPSK的主要区别在于每个符号的比特位数,QPSK是一个符号2个比特,BPSK是一个符号1个比特。 需要具备的基础知识: (1)GNU Radio系列教程(二):初级篇之GNU Radio介绍 (2)GNU Radio系列教程(六):初级篇之GNU Radio GRC 硬件使用实例之信号频谱分析 (3)GNU Radio系列教程(七):初级篇之GNU R..

无线通信实验室 7410

一起玩转GNU Radio:gnuradio GRC一种自定义模块的实现方法

本文内容、开发板及配件仅限用于学校或科研院所开展科研实验! 温馨提示:“开源SDR实验室”是北京的。 本文介绍GNU Radio GRC中的一种自定义模块的实现方法。 目录 一、Options模块设置 二、添加“pad source”和“pad sink”模块 三、添加参数模块Parameter 四、点击生成按钮 五、调用自定义模块 六、有用链接和联系方式 如果需要在gnuradio下自定义自己的模块,一般情况下可以使用C++程序进行编写,具体可以参考以下教程: https://w..

无线通信实验室 5436

GNU Radio 实数与复数信号分析

本文内容、开发板及配件仅限用于学校或科研院所开展科研实验!

无线通信实验室 5068

一起玩转GNU Radio:信号功率测量

本文内容、开发板及配件仅限用于学校或科研院所开展科研实验!

无线通信实验室 4636

在GNU Radio中编写自定义信号处理模块

在GNU Radio中编写自定义信号处理模块

gnuradiog 使用手册

gnuradiog 使用手册,方便大家配置gnuradio的环境

GNU-Radio中文入门教程_LTE-A_

软件无线电开发,开发软件无线电,开发使用

Overleaf+EndNote+BibTeX:手把手搞定Elsevier期刊投稿的参考文献格式(避坑指南)

本文详细介绍了如何利用Overleaf、EndNote和BibTeX三大工具无缝协作,解决Elsevier期刊投稿中的参考文献格式问题。从工具链配置、文献库导出、BibTeX文件优化到Overleaf集成与编译,提供全流程指南和常见问题解决方案,帮助学术新手高效完成Elsevier期刊投稿。

weixin_30616969的博客 509

【七】Hadoop3.3.4基于ubuntu24的分布式集群安装

本次安装实验基于苹果m2芯片的mac系统,使用vmware fusion搭建三台ubuntu24分布式虚拟机,确保在三台机器上安装了Java jdk8,并配置了免密码登录,网络互通,防火墙关闭,授时服务器已经同步。访问apche官网源,下载3.3.4版本,我们用二进制通用版即可,因为hadoop运行在java环境,跨平台性使得无需编译arm架构版本。至此,Hadoop的安装完成,包括hdfs文件存储系统,mapreduce计算框架,yarn资源管理系统均能正常、稳定使用。

qq_31412425的博客 2161

带有HSE组件的S32系列芯片中各子系统如何依次启动?

仔细阐述了上电后各个子系统的启动顺序,并给出了详细的启动步骤流程图。

车载系统攻城狮 1702

不藏了!Wireshark 命令、捕获、过滤器大全分享给你

Wireshark,这款广受欢迎的开源网络协议分析工具,堪称网络管理员、网络安全专家和网络爱好者的“显微镜”!它可以帮助我们捕获网络中的数据包,并提供详细的解码和分析能力。本文将为您全面剖析 Wireshark 的强大功能,从基础到高级,让你快速掌握这个神器!💡Wireshark 是一款功能强大的网络协议分析器,最早由 Gerald Combs 于 1998 年开发,经过多年发展,已成为网络诊断和分析的首选工具。

网络技术联盟站 727

【实际操作】DenseFusion复现过程详解-YCB-Video数据集

这一篇是在YCB-Video数据集上的训练和测试过程。本次实验建立在实现LineMod数据集训练基础之上,因为前期的环境搭建都是一样的。首先,需要下载YCB-Video数据集,可以自己找找百度网盘资源,大概有两百多G。把下载下来的数据放在/work/DenseFusion/datasets/ycb/下并命名为YCB_Video_Dataset。同样的,激活自己的环境并进入 /work/DenseFusion/下,用命令:./experiments/scripts/train_ycb.sh出现以下内容开始训练

weixin_44564705的博客 3561

TensorFlow2深度学习实战(十四):目标检测算法 YOLOv4 解析

最易上手的【计算机视觉】小白教程!

不积跬步,无以至千里! 7635

解决Jupyter Notebook中Plotly图表显示问题

摘要:在Jupyter Notebook中使用Plotly绘图时遇到图表无法显示的问题。通过分析发现Python 3.12版本与Jupyter存在兼容性问题。解决方案是将Python降级到3.11版本,重新创建虚拟环境后图表正常显示。这表明版本兼容性对数据可视化工具至关重要,环境配置检查是解决问题的关键步骤。该案例为遇到类似问题的开发者提供了参考方案。

m0_74337424的博客 125

配置 SAP Fiori 服务的 ICF 节点:从 SICF 激活到访问链路打通的完整实践

在SAP Fiori项目实施中,ICF节点配置是关键前置条件却常被忽视。ICF(Internet Communication Framework)作为HTTP请求入口,需要通过SICF事务码激活相关服务节点,否则即使应用开发完善,用户仍可能遇到页面无法访问等问题。典型问题表现为:磁贴可点击但页面空白、资源加载失败等。激活路径主要涉及三组节点:bsp分支下的管理入口、ui5_ui5分支下的应用资源,以及public/bc下的公共资源。项目实施中需特别注意同名服务在不同分支下的差异化作用,确保完整链路通畅。IC

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 264

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: BladeRF osmocom模块由于缺少libbladerf-dev导致source/sink模块提示no support device
下一篇: GNU Radio系列教程(四):初级篇之GNU Radio GRC采样率
无线通信实验室
博客等级 码龄11年 2704粉丝 77原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值