首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

解决GNU Radio+USRP实现OFDM收发在接收端存在误码问题

一、OFDM 收发流程 当使用官方例程(一次发送 10 即 960 个字节数据进行测试时即使是在仿真中将信道条件改为理想信道时在接收端也会出现丢帧现象。...Header/Payload Demux:该模块作用是根据定时信息和头信息,将复合在一起头和数据进行分离。该模块工作原理是:首先,将三个输入端口从上到下编号为 0,1,2,输出端编号类似。.../* 这里使用了一个for循环从skip_items开始,一直到max_rel_offset,遍历触发信号数据。...959 个数据作为当前数据进行输出。...根据源码数据处理过程,源码中每次接收到定时信号后,都会提取紧跟着该定时信号后面的 959 个数据作为当前进行输出,因此这对定时信号精确型提出了很高要求,如果相邻两个定时信号间隔出现了小于正常数据长度偏差

19310

GNU Radio之OFDM Frame Equalizer底层C++实现

如果在第一个项目中找到带有 'ofdm_sync_carr_offset' 键标签,这将被解释为以载波数量表示粗略频率偏移。 接下来,它在一个或两个维度上对标记 OFDM 进行均衡。...; } // *************************设置输出倍数********************************* /* 如果设置了固定长,这行代码设置输出数据大小为固定倍数...int frame_len = 0; if (d_fixed_frame_len) { // 如果有固定长度,则使用长度;否则使用输入项数量作为长度 frame_len...具体来说,循环前缀长度相对于FFT长度比例影响了因频率偏移而导致每个样本相位变化 */ gr_complex phase_correction; for (int i = 0;...= CHAN_TAPS_KEY && // 如果标签不是通道状态(CHAN_TAPS_KEY)和不是固定长度关键字(d_length_tag_key_str),则将该标签添加到输出流标签中。

8210
您找到你想要的搜索结果了吗?
是的
没有找到

【作者投稿】奇葩webshell技巧

不废话了,原理如下: 先大致讲一下,任何由 {A-Z|a-z|0-9|+|/} 组合字符串(如果不够4倍数可以用'='补全),如果长度为4倍数,则都可以作为base64解码材料,而在base64decode...三个背景知识: ① 编码和解码不是唯一对应,就是说字母a可能通过不同,其它字符组合进行base64解码解出来。...我们跟进enmu_tables()函数,它将我们可以使用8个字符带入enmu_table()函数,四位为一组进行组合,然后进行base64解码,生成了一个list,这个listkey值为所有acgtACGT...找到之后,再去第二个表中,将目前这些字符,用第一次循环得到26位字符串4位组合替换掉,然后再去第一个表中,找到用最初始8位字符组成四位字符串替换; 总共替换了3次,又因为在把一句话进行输入时候额外进行了一次...特别长,我就不贴出来了 那个脚本中还要注意一点为: ? 其中,如果长度不是4倍数,会根据base64编码原理默认用等号补齐,凑够长度为4倍数

86910

c语言每日一练(2)

s长度 strlen函数特性则是在遇到\0时候会停止访问,而字符串末尾都会有\0,虽然你看不到。...关于strlen博主之前也写过一篇博客介绍,对strlen函数不是很理解朋友们可以去看看。...main() { printf("%d\n", NUM); return 0; } A.4 B.8 C.9 D.6 解析:宏定义就是在进行操作之前先将对应代码替换成对应宏。...N有宏定义,替换结果为(2+1+1)*2+1/2,计算结果为8.5,但printf准备打印整型数据,那么就会导致数据丢失,打印出8 3、如下函数 f(1) 值为( ) int f(int n)...4倍数位置,因此,偏移量为4,5,6,7被占据,而偏移量为1,2,3空间被浪费,char型占1个字节,它不用对齐,所以偏移量为8位置被占据,大小为9,再根据内存对齐规则,要对齐到最大对齐数倍数

16810

JAVA相关编译知识

收集标识符属性信息,存放到符号表数据结构中,并使用字符串表进行记录标识符符号长度和名字。 也就是下面这张图: ~2....由于每次循环时候都会进行一次判断看是不是已经编译过如果编译过会直接替换循环入口地址指向本地代码,这种在方法执行过程中(也就是栈已经建立前提下)进行替换操作也叫栈上替换。...而第一种基于方法则是在每次调用方法时才进行判断(这个时候方法栈还未建立)而不是循环体一样在每次碰到循环时(栈已经建立)都进行判断这时候循环体是已经在栈中运行,所以第一种方法不是栈上替换。...当循环次数达到了条件则会进行栈上替换入口地址为本地代码地址。方法在运行过程中进行替换所以叫栈上替换。 收到编译请求,之后操作?...标量:不可再被分解变量比如八大数据类型。聚合量:对象就是聚合量其由很多标量进行构成。对于创建对象来说会将使用对象变量直接替换为标量,不进行创建对象开销。 二,3同步消除。

58220

md5碰撞实验

MD5(Message Digest Algorithm 5)是一种常用哈希函数,它将输入数据按照64字节一组进行切分,并在这些分组上进行迭代地计算。...如果前缀长度不是64倍数,对结果无影响。最终md5collgen生成填充域加上前缀prefix长度一定是64字节倍数。如下图所示,生成一个60字节长度文件并对其进行md5碰撞。...使用bless查看其中一个生成文件,可以看到填充域为132字节长度。最终生成文件一定是64字节倍数。 – Question 2....我们通过截取文件内容,并利用工具构造碰撞填充域,然后将填充域替换可执行文件中变量区域,这样就完成了prefix+填充域(长度为64字节倍数)对于prefix+其他内容(长度为64字节倍数替换,...由于填充之后内容长度为64字节倍数,根据md5算法特性,替换前后迭代到当前位置IHV是相同,因此整个文件内容md5散列值是相同

49520

UDPFPGA实现(中) | UDP段、IP包、MAC结构

选项部分(可选字段)最大值为40字节,不够4倍数要用0填充,使数据部分起始地址为4倍数。 服务类型 : 长度为8比特,置0 is ok~,对此研究不深。...IP报头校验和,不对首部后面的数据进行计算,在发送数据时,为了计算IP数据校验和,步骤为: (1)、将校验和字段置0,然后将IP包头按照16bit分成更多单元,如包头长度不是16bit整数倍,...前导码和起始符不算MAC组成,所以MAC固定长度为6+6+2+4=18。 MAC头包括三个字段,前两个字段分别为6字节长目的地址字段和源地址字段,第三个字段为2字节类型/长度字段。...MAC数据和填充部分长度必须在46~1500字节之间,这是由以太网物理特性决定,这个1500字节被称为链路层MTU(最大传输单元,Max Transmit Unit),但是这并不是指链路层长度被限制在...校验序列(FCS) 在NetAssist中可选是否发送校验序列,对接受网卡判断是否传输错误一种方法,如果发现错误,丢弃此使用CRC循环冗余校验码校验)。

2.7K30

两个函数搞定关键词统计!

对于这个问题,结局方法其实很多,比如在Excel传统方法中,经常把关键词通过替换方式剔除后,算一下剩余文本长度与原来文本长度差值,然后除以关键词长度,得到结果就是关键词个数,这个思路在Power...Query中当然也适用: = (Text.Length([描述]) // 原文本长度 -Text.Length( //获取替换掉关键词后文本长度 Text.Replace...,比如,用关键词对文本进行拆分,显然,拆分后列表内容项数多关键词个数多1(关键词在句首或句尾情况下,仍然会拆分得到其前面或后面的1项空内容)。...这种方法在Power Query里实现起来更加简单,两个函数轻松搞定,且完全无重复内容: = List.Count( //对拆分后列表进行计数 Text.Split...,这不是最关键,最关键仍然是:Power Query可以将所有处理过程连成一体,使得数据处理全过程真正地实现自动化。

66420

HashMap & ConcurrentHashMap

数组 链表对比 数组长度不可增加、读取速度块,在内存时一块连续区域 链表在内存不是一块连续区域 HashMap底层原理是: 数组 + 链表 当链表长度大于8时 即链表长度等于9,链表结构就会转换为红黑树...范围-231次方到231次方-1 长度2n次方原因: hash & 数组长度-1 只有是2n次方时候 -1 才能拿到2n次方进行按位与 才能快速拿到下标,并且均匀分布 如果遇见相同...HashMap线程不安全原因:假如两个线程,同时操作HashMap,如果两个线程同时扩容,存储在链表顺序会翻过来,将元素放在头部,避免尾部遍历,如果发生了,就死循环了。...如果值不为空,先进行hash运算,得出哈希值(hash散列,位扰动,尽可能减少Hash碰撞),接下来将这个Hash运算成存储索引下标(与运算( 运算规则:两个数都转为二进制,然后从高位开始比较,如果两个数都为...(假设有两个元素添加到链表上,数组上存是A(e=a,next=B),该数组上链表村是B(e=b,next=null))线程1扩容完毕,线程二唤醒了,他去读取数据,先读取数组上A(e=a,next

90520

Unity基础教程系列(新)(四)——测量性能(MS and FPS)

创建文字游戏对象后,使其成为面板子节点,将其锚定为两个方向拉伸模式。这将用右侧和底部字段替换宽度和高度。...我们可以使用>=大于等于运算符进行检查。更新显示后,将累积和持续时间设置回零。 ? ? (1秒平均帧率) 2.5 最好和最差 平均帧率波动是因为我们应用程序性能不是恒定不变。...同样,最坏速率不必一定是显示刷新速率倍数。这是可能,因为我们不是测量显示之间持续时间。而是在测量Unity之间持续时间,这是其更新循环区间迭代。...可以使用if-else块来执行此操作,每个块都返回适当结果。 ? 通过将名称(以int形式)与函数数组长度减去一个(与最后一个函数索引匹配)长度进行比较,可以使该方法与函数名称无关。...(函数循环) 现在,我们可以通过对build进行概要分析来依次查看所有功能性能。 ? (对循环函数进行Profile) 在我例子中,所有函数速率都是一样,因为它从不低于60FPS。

3.6K21

斯坦福大学密码学-信息完整性 05

CRC 循环冗余检测,是一个经典校验和算法,为检测信息中随机发生错误而设计,而不是恶意错误。 image.png 安全MAC。存在性伪造。 image.png 攻击者不能做到以下两点。...所以用户可以检测出哪些文件进行了修改。 假如病毒可以交换 和 ,那么也会造成伤害。解决办法:将文件名放在文件内容中进行完整性检测。 注意:MAC可以抵御文件篡改或者广义上数据篡改。...这一步使用一个独立密钥完成。 如果不定义的话,叫做原CBC函数,不是一个安全MAC。 image.png 如果进行攻击的话,不知道密钥k。 image.png 选择消息攻击。...之前都假设消息正好是分组倍数,如果不是,需要填充。 在后面补充0,大错特错。会导致 pad(m)=pad(m||0)。 image.png 补齐函数必须是一一映射。...长度是分组倍数信息长度长度不是分组倍数信息长度多。因此我们无法获得一个从大所有信息集合到小分组倍数信息集合意义映射。所以必须扩展,就对应于添加一个假分组。

1.3K11

【C++】内联函数、auto关键字、NULL与nullptr

,需要进行如下设置: 接下来我们通过一段简单代码来进行对比: 因此,我们可以很直观看到,内联函数是在编译阶段,直接将指令展开,并没有调用函数,从而开辟栈,因此会提升程序运行效率。...(假如这一个内联函数实现需要上百行指令,则每一次使用该函数都会展开上百行),是一个倍数关系。...看下面两个代码: int a=0;//a类型为int auto b=a;//auto进行自动推导,由于b=a,a类型为int,所以b类型就会被推到成int 我们可以通过typeid(变量).name...TestAuto(auto a) {} 不能直接用来声明数组 auto与新式for循环 auto在实际中最常见优势用法就是跟C++11提供新式for循环,还有lambda表达式等进行配合使用。...//2 4 6 8 10 } 这里需要注意是,使用这种新式for循环,必须保证被迭代范围是确定

40460

安全运维 | tcprepaly工具安装与使用!

,双网卡回放报文必选参数,指定主接口 -S #制定包长度 -L, --limit=num #限制发送数据包数量 --duration=num #限制发送秒数,限制发包数量...(1500 字节) --mtu-trunc 截断大于指定 MTU 数据包 -E, --efcs 从尾删除以太网校验和 (FCS)...num 设置 IPv6 流量类别字节 --flowlabel=num 设置 IPv6 流标签 -F, --fixlen=str 填充或截断数据数据以匹配报头长度...X 次 --loopdelay-ms=num 循环之间延迟(以毫秒为单位) --pktlen 覆盖 snaplen 并使用实际数据包 len...--skip-soft-errors 跳过写入软错误数据包 2 Tcpreplay典型案例 本次案例使用Tcpreplay工具,重放具有攻击特征流量数据包,触发IPS告警信息。

1.4K20

Timestamps are unset in a packet for stream 0. This is deprecated and will stop

流0数据包中未设置时间戳,这已不推荐使用,并将在未来停止工作发布于2022年4月10日 最近,在处理多媒体应用程序或视频处理库时,您可能会遇到一个警告信息,提示“流0数据包中未设置时间戳,这已不推荐使用...理解警告信息警告信息“流0数据包中未设置时间戳,这已不推荐使用,并将在未来停止工作”通常出现在处理多媒体数据(如视频或音频流)时。它表示特定流(在本例中为流0)时间戳未正确设置或根本没有提供。...设置时间戳:在对多媒体数据进行编码或解码时,确保为每个数据包设置准确时间戳。时间戳应反映数据包中实际对应时间。同步流:如果您正在处理多个流,确保所有流时间戳同步。...然后,它使用​​cap.read()​​读取摄像头捕获视频,并使用​​cv2.imshow()​​显示。按下键盘上"q"键将停止循环。...这只是​​cv2.VideoCapture​​一个简单示例,您可以根据需要使用其他方法和属性对视频流进行处理,例如设置视频属性、保存视频等。

74020

文心一言 VS 讯飞星火 VS chatgpt (34)-- 算法导论5.3 1题

为了达到这个目的,我们可以对过程进行以下修改: 1.初始化一个长度为n数组A,并将其元素初始化为0到n-1之间随机整数。 2.定义一个长度为n数组S,用于存储已经遍历过元素。...为了证明引理5.5,我们需要先证明以下两个辅助引理: 引理5.5.1:对于任意一个长度为k子数组B,其包含一个0排列概率等于1/k!。 证明:我们可以使用数学归纳法证明引理5.5.1。...• 如果B_{i+1}= 0,则不需要进行任何操作。 最后,我们可以将以上步骤合并为一个步骤,即随机选择一个非空子数组S,并将其中每个元素都替换为其共轭矩阵。...假设我们有一个包含 n 个元素数组 a,其中 n 是 n 倍数。我们可以将该数组随机化,并将其中所有元素替换为 0。假设这个数组为 b,则根据循环不变式,b 中都有 a_i=0。...现在我们考虑将 b 替换为 a。由于 n 是 n 倍数,a 中都有 n 个不同元素。因此,b 中都有 n 个不同元素,即 b 中都有 a_i=0。

46440

8.JVM内存分配机制超详细解析

空闲列表 如果Java堆中内存不是规整,已使用内存和空闲内存相互交错,那就没有办法简单地进行指针碰撞了,虚拟机就必须维护一个列表,记录上哪些内存块是可用,在分配时候从列表中找到一块足够大空间划分给对象实例...前面28位,不是8倍数,所以补4位。 1.1.5.执行方法 这里init方法,不是构造方法,是c++调用init方法。...这时JVM做了一个优化,即便在栈中没有一块连续空间方法下这个对象,他也能够通过其他方式,让这个对象放到栈里面去,这个办法就是标量替换。 什么是标量替换呢?...如下图: 栈空间中没有一块完整空间放User对象,为了能够放下,我们采用标量替换方式,不是将整个User对象放到栈中,而是将User中成员变量拿出来分别放在每一块空闲空间中。...这种不是放一个完整对象,而是将对象打散成一个个成员变量放到栈上,当然会有一个地方标识这个属性是属于那个对象,这就是标量替换

1.2K21

base64 编码原理以及C语言实现

每组空出来两个高位要补上0。...) j(35) 于是一串base64码就出来了:abc->YWJj 假如加密内容长度不是3倍数怎么办?...A要替换为=,因为转换后具有有效信息只是前6个字节 得到base64码YWJjZA== 代码实现 利用3变4,不够3补为3逻辑,我们可以利用C语言以三个字节为一组利用位运算符进行base64转换(个人认为三个字节一组循环处理是最高效...不过这里有个容易搞错东西,解码时每个字符字节对应二进制数据不是这个字符ASCII码,而是这个字符在码表中下标。...base加密同理) 通常decode函数会有定长循环同时带有很多位运算和指针操作啥,利用这点可以快速锁定关键函数 使用位移运算写算法通常会带有有几个关键整数,比如:4,2,6,15,63啥

1.2K30

Python 列表

列表长度和内容都是可变,可自由对列表中数据进行增加、删除或替换。列表没有长度限制,元素类型可以不同,使用非常灵活。...=、>=、>)进行比较,列表比较实际上是单个数据逐个比较。...列表常用操作: 函数或方法 描述 ls[i] = x 替换列表ls第i数据项为x ls[i: j] = lt 用列表lt替换列表ls中第i到j项数据(不含第j项,下同) ls[i: j: k] =...lt 用列表lt替换列表ls中第i到j以k为步数据 del ls[i: j] 删除列表ls第i到j项数据,等价于ls[i: j]=[] del ls[i: j: k] 删除列表ls第i到j以k为步数据...'] print(ls) 当使用一个列表改变另一个列表值时,Python 不要求两个列表长度一样,但遵循“多增少减”原则。

2.8K20

图解pandas模块21个常用操作

2、从ndarray创建一个系列 如果数据是ndarray,则传递索引必须具有相同长度。...5、序列聚合统计 Series有很多聚会函数,可以方便统计最大值、求和、平均值等 ? 6、DataFrame(数据) DataFrame是带有标签二维数据结构,列类型可能不同。...18、查找替换 pandas提供简单查找替换功能,如果要复杂查找替换,可以使用map(), apply()和applymap() ?...19、数据合并 两个DataFrame合并,pandas会自动按照索引对齐,可以指定两个DataFrame对齐方式,如内连接外连接等,也可以指定对齐索引列。 ?...21、apply函数 这是pandas一个强大函数,可以针对每一个记录进行单值运算而不需要像其他语言一样循环处理。 ? ? 整理这个pandas可视化资料不易

8.4K12
领券