GNU Radio FFT模块结合stream to vector应用及Rotator频偏模块使用

news2024/11/24 7:29:54

文章目录

  • 前言
  • 一、FFT 模块应用
    • 1、stream to vector 介绍
    • 2、创建 grc 图测试
    • 3、运行结果
  • 二、频偏模块
    • 1、Rotator 简介
    • 2、创建 grc 图测试
    • 3、运行结果


前言

写个博客记录一下自己的蠢劲儿,之前我想用 FFT 模块做一些信号分析的东西,官方的 FFT 模块必须输入与 FFT 大小一致的数据,然后我也想到了使用 stream to vector 将流数据转换为固定长度的向量数据,然后再一次性喂给 FFT 模块,但是,stream to vector 模块我用的不对,导致 stream to vector 的输出连接 FFT 模块的那条线就一直是红色,我就以为官方的 FFT模块不好用,因此自己就做了 C++ OOT FFT 模块方便自己使用,今天突发奇想,官方做的应该不会有问题,会不会是我自己的使用不当,果真如此,这真是一次教训啊,做这个 FFT 花费了不少时间,既然是教训,那就吃亏是福吧。


一、FFT 模块应用

1、stream to vector 介绍

stream to vector 模块介绍:
在这里插入图片描述

  • Num items:连接成一个输出向量的连续输入项的数量
  • Vec Length:输入向量的长度。输出向量的长度为 Vec Length * Num items

之前我的做法是将 Vec Length 设置成了1024,将 Num items 设置为 1,因此导致输入输出 IO size 不同,犯了这个低级错误,导致自己造轮子重新造了一个 FFT 模块:GNU Radio创建FFT、IFFT C++ OOT块

2、创建 grc 图测试

复刻官方的 demo 示例 grc 图。
在这里插入图片描述
S ( f ) = 10 lg ⁡ ∣ X ( f ) ∣ 2 / f f t _ l e n S(f)=10 \lg^{|X(f)|^2 / fft\_len} S(f)=10lgX(f)2/fft_len
其中:

  • S ( f ) S(f) S(f):信号功率谱密度的对数,单位为 dB
  • ∣ X ( f ) ∣ 2 ∣X(f)∣^2 X(f)2:为信号的功率谱密度
  • f f t _ l e n fft\_len fft_len:傅里叶变换长度

在进行快速傅里叶变换 (FFT) 时,输出的幅度与输入的样本数量相关。对于 f f t l e n fft_len fftlen 个输入样本,FFT 的输出通常需要缩放 1 / f f t _ l e n 1/fft\_len 1/fft_len 以保持幅度一致,如果要保持输入信号和 FFT 输出的能量一致,需要对 FFT 的结果进行归一化。 1 / f f t _ l e n 1/fft\_len 1/fft_len 是最常见的归一化系数。

3、运行结果

在这里插入图片描述
从上图可知,运行结果一致。

二、频偏模块

如何对现有的信号做叠加频偏呢?我们来看一下如何实现

1、Rotator 简介

旋转器(Rotator)块执行频率平移操作。这种操作被称为旋转,因为如果将复数采样(实部和虚部)中的实部和虚部绘制在复数单位圆上,在这个圆上进行旋转会产生一个给定频率的波形。顺时针或逆时针进行这样的旋转会产生正频率或负频率,这正是这个块在数学上执行的操作。
在这里插入图片描述
相位增量(以弧度为单位)是每次采样时信号增加的额外相移量。因此,该块相当于用复数正弦进行乘法操作。

在这里插入图片描述

我们正在处理采样信号,因此我们只能在每个采样间隔 T s = f f s T_s=\frac{f}{f_s} Ts=fsf 观察它,在两个采样时刻之间,相位会增长 Δ ϕ = 2 π f f s \Delta \phi = 2\pi\frac{f}{f_s} Δϕ=2πfsf,因此,为了实现特定的频率偏移 f f f,必须从目标频率计算相位增量。

2、创建 grc 图测试

在这里插入图片描述

其中 Rotator 的参数 Phase Increment 值如下: 2 ∗ n p . p i ∗ f r e q _ o f f s e t s a m p _ r a t e 2*np.pi*\frac{freq\_offset}{samp\_rate} 2np.pisamp_ratefreq_offset
在这里插入图片描述

3、运行结果

上面我们将 freq_offset 也就是频率偏移设置为 4 KHz,因此经过频偏后的信号应该在原信号的基础上频谱会偏移 4KHz。

原信号频率为 1KHz,经过频偏后的信号为 5KHz

在这里插入图片描述


我的qq:2442391036,欢迎交流!


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

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

相关文章

redux的简单用法

1.安装包 npm install reduxjs/toolkit react-redux -S 2.看看目录结构 3.store的user代码 import { createSlice } from "reduxjs/toolkit";// 初始状态 let initialState {count: 1,users: [{name: "zhangzhang",pass: "123456",},],infor…

CSS中文本样式(详解网页文本样式)

目录 一、Text介绍 1.概念 2.特点 3.用法 4.应用 二、Text语法 1.文本格式 2.文本颜色 3.文本的对齐方式 4.文本修饰 5.文本转换 6.文本缩进 7.color:设置文本颜色。 8.font-family:设置字体系列。 9.font-size:设置字体大小。…

劝退计算机?CS再过几年会没落!?

事实上,未来计算机不仅不会没落,国家还会大力发展 只不过大家认为的计算机就是什么Java web,真正的计算机行业是老美那样的,涉及到方方面面,比如: web,图形学,Linux系统开发&#…

【第11章】spring-mvc默认转换器

文章目录 前言一、DateFormatter二、NumberFormat1. NumberBean2. number.jsp 三、ConverterController四、执行结果总结 前言 【第6章】spring类型转换器 此章节内容为spring类型转换器内容扩展,使用spring提供的注解增强转换器功能,让date和int等类型转换更加方便。 一、Da…

利用生成式AI重新构想ITSM的未来

对注入 AI 的生成式 ITSM 的需求,在 2023 年 Gartner AI 炒作周期中,生成式 AI 达到预期值达到顶峰后,三分之二的企业已经将生成式 AI 集成到其流程中。 你问为什么这种追求?在预定义算法的驱动下,IT 服务交付和管理中…

PM说|还有不会DISC的项目经理?

DISC行为模型是一种常用于职场中的人际交往工具,它通过对个体的行为特点进行分类和分析,帮助人们更好地理解自己和他人的行为方式,从而更加高效地进行沟通和合作。在项目管理过程中,多方沟通是必备工作技能,如何利用DI…

CP AUTOSAR之CANXLDriver详细说明(正在更新中)

本文遵循autosar标准:R22-11 1 简介及功能概述 本规范描述了AUTOSAR 基础软件模块CAN XL 驱动程序的功能、API和配置。   本文档的基础是[1,CiA610-1]和[2,CiA611-1]。假设读者熟悉这些规范。本文档不会再次描述CAN XL 功能。   CAN XL 驱动程序是最低层的一部…

基于TF的简易关键字语音识别

⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计10182字,阅读大概需要10分钟 🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号&#…

淤地坝安全监测预警系统解决方案

一、方案背景 淤地坝是黄土高原地区人民群众长期同水土流失斗争实践中创造的一种行之有效的水土保持工程措施,在拦泥保土、减少入黄泥沙、防洪减灾、淤地造田、巩固退耕还林(草)、保障生态安全、促进粮食生产和水资源合理利用及经济社会稳定发…

自动驾驶学习1-超声波雷达

1、简介 超声波雷达:利用超声波测算距离的雷达传感器装置,通过发射、接收 40kHz、48kHz或 58kHz 频率的超声波,根据时间差测算出障碍物距离,当距离过近时触发报警装置发出警报声以提醒司机。 超声波:人耳所不能听到的…

HG-KN73J-S100 三菱伺服电机(750W型)

HG-KN73J-S100属于三菱MR-JE系列伺服系统,可以与伺服驱动器MR-JE-70A、MR-JE-70B、MR-JE-70C配套使用。HG-KN73J-S100完全替换HF-KN73J-S100。HG-KN73J-S100规格、HG-KN73J-S100参数。 HG-KN73J-S100参数说明:MR-JE低惯性/小容量、0.75Kw三菱伺服电机HG-…

Web实操(6),基础知识学习(24~)

1.[ZJCTF 2019]NiZhuanSiWei1 (1)进入环境后看到一篇php代码,开始我简单的以为是一题常规的php伪协议,多次试错后发现它并没有那么简单,它包含了基础的文件包含,伪协议还有反序列化 (2&#x…

uniapp文本框上下滚动问题

一个基本需求,textarea标签没有办法通过手拖动的方式进行滚动,当文字超出其容量后,想要编辑上面被遮挡部分的文字这边难以点到,电脑可以鼠标滚轮,但手机需要拖动但无效: 下面提供了我的解决思路&#xff1a…

IP规划案例

整个OSPF环境IP基于172.16.0.0/16划分 172.16.0.0/16 先分成2个网段(OSPF RIP),借1位172.16.0.0/17 ---OSPF 再按区域划分(5个区域),借3位 172.16.0.0/20 ---Area 0 三个环回 MGRE 4个网…

【Vue】pinia

pinia 官网:https://pinia.vuejs.org/zh/ 搭建 pinia 环境 第一步:npm install pinia --save 第二步:操作src/main.ts import { createApp } from vue import App from ./App.vue/* 引入createPinia,用于创建pinia */ import { createP…

VALSE 2024 Tutorial内容总结--开放词汇视觉感知

视觉与学习青年学者研讨会(VALSE)旨在为从事计算机视觉、图像处理、模式识别与机器学习研究的中国青年学者提供一个广泛而深入的学术交流平台。该平台旨在促进国内青年学者的思想交流和学术合作,以期在相关领域做出显著的学术贡献&#xff0c…

技术速递|使用 .NET 为 Microsoft AI 构建可扩展网关

作者:Kara Saucerman 排版:Alan Wang Microsoft AI 团队构建了全面的内容、服务、平台和技术,以便消费者在任何设备上、任何地方获取他们想要的信息,并为企业改善客户和员工的体验。我们的团队支持多种体验,包括 Bing、…

RVM(相关向量机)、CNN_RVM(卷积神经网络结合相关向量机)、RVM-Adaboost(相关向量机结合Adaboost)

当我们谈到RVM(Relevance Vector Machine,相关向量机)、CNN_RVM(卷积神经网络结合相关向量机)以及RVM-Adaboost(相关向量机结合AdaBoost算法)时,每种模型都有其独特的原理和结构。以…

call, apply , bind 区别详解 及 实现购物车业务开发实例

call 方法: 原理 call 方法允许一个对象借用另一个对象的方法。通过 call,你可以指定某个函数运行时 this 指向的上下文。本质上,call 改变了函数运行时的作用域,它可以让我们借用一个已存 在的函数,而将函数体内的 th…

关于执行CLAM的代码的一些需要记录的点

文章链接:[2004.09666] Data Efficient and Weakly Supervised Computational Pathology on Whole Slide Images (arxiv.org) 代码链接:GitHub - mahmoodlab/CLAM: Data-efficient and weakly supervised computational pathology on whole slide images…