伪随机码详解

news2024/12/27 1:42:57

本专栏包含信息论与编码的核心知识,按知识点组织,可作为教学或学习的参考。markdown版本已归档至【Github仓库:https://github.com/timerring/information-theory 】或者公众号【AIShareLab】回复 信息论 获取。

文章目录

    • 伪随机码
      • 伪随机序列的概念
      • 伪随机序列的产生

伪随机码

伪随机序列的概念

伪随机序列应当具有类似随机序列的性质。在工程上常用二元 {0,1} 序列来产生伪随机(噪声)码, 它具有以下几个特点:

  • 在随机序列的每一个周期内 0 和 1 出现的次数近似相等。
  • 每一周期内, 长度为 n \boldsymbol{n} n 的游程取值(相同码元的码元串)出现的次数比长度为 n+1 的游程次数多一倍。
  • 随机序列的自相关类似于白噪声自相关函数的性质。

对伪随机码定义可写为

(1)凡自相关函数具有

ρ x ( j ) = { ∑ i = 1 n x i 2 p = 1 , j = 0 ∑ i = 1 n x i x i + j p = − 1 p , j ≠ 0 . \rho_{x}(j)=\{\begin{array}{l} \sum_{i=1}^{n} \frac{x_{i}^{2}}{p}=1, \quad j=0 \\ \sum_{i=1}^{n} \frac{x_{i} x_{i+j}}{p}=-\frac{1}{p}, j \neq 0 \end{array}. ρx(j)={i=1npxi2=1,j=0i=1npxixi+j=p1,j=0.

形式的码, 称为伪随机码, 又称为狭义伪随机码。

(2) 凡自相关函数具有

ρ x ( j ) = { ∑ i = 1 n x i 2 / p = 1 j = 0 ∑ i = 1 n x i x i + j / p = a < 1 j ≠ 0 . \rho_{x}(j)=\{\begin{array}{ll} \sum_{i=1}^{n} x_{i}^{2} / p=1 & j=0 \\ \sum_{i=1}^{n} x_{i} x_{i+j} / p=a<1 & j \neq 0 \end{array}. ρx(j)={i=1nxi2/p=1i=1nxixi+j/p=a<1j=0j=0.

形式的码, 称为广义伪随机码。狭义伪随机码是广义伪随机码的特例。

伪随机序列的产生

可以用移位奇存器作为伪随机码产生器, 图1是一个4级移位寄存 器, 用它就可产生伪随机序列。图1中的反馈逻辑为
a n = a n − 3 ⊕ a n − 4 a_{n}=a_{n-3} \oplus a_{n-4} an=an3an4
在这里插入图片描述

当移位寄存器的初始状态是 a n − 4 = 1 a_{n-4}=1 an4=1, a n − 3 = 0 a_{n-3}=0 an3=0, a n − 2 = 0 a_{n-2}=0 an2=0, a n − 1 = 0 a_{n-1}=0 an1=0 , 经过一 个时钟节拍后, 各级状态自左向右移到下一级, 末级输出一位数, 与此同时模二加法器输出加到移位寄存器第一级, 从而形成移位 寄存器的新状态, 下一个时钟节拍到来又继续上述过程, 末级输出序列就是伪随机序列。在这种条件下, 产生的伪随机序列是

这是一个周期长度p=15的伪随机序列。

当上图的初始状态是 0 状态时, 即 a n − 4 = a n − 3 = a n − 2 = a n − 1 = 0 a_{n-4}=a_{n-3}=a_{n-2}=a_{n-1}=0 an4=an3=an2=an1=0 移存器的输 出是一个0序列。

4 级移存器共有 16 个状态, 除去一个 0 状态外, 还有 15 个状态。 对于图1来说, 只要随机序列的周期达到最大值, 这时无论如何 改变移存器的初始状态, 其输出只改变序列的初相, 序列的排 序规律不会改变。

但如果改变图四级移存器的反馈逻辑, 其输出序列就会发生变化。

下图中的反馈逻辑是 a n = a n − 2 ⊕ a n − 4 a_{n}=a_{n-2} \oplus a_{n-4} an=an2an4 , 初始状态为 1111, 输出序列为111100111100111…

在这里插入图片描述

反馈逻辑是 a n = a n − 2 ⊕ a n − 4 a_{n}=a_{n-2} \oplus a_{n-4} an=an2an4 , 时, 给定不同的初始状态1111、 0001 、 1011 , 可以得到三个完全不同的输出序列 111100111100…, 000101000101…,101101101101。它们的周期分别是6、6和3。

由此, 我们可以得出以下几点结论:

(1)线性移位寄存器的输出序列是一个周期序列。

(2)当初始状态是0状态时, 线性移位寄存器的输出是一个0序列。

(3)级数相同的线性移位寄存器的输出序列与寄存器的反馈逻辑有关。

(4)序列周期 p < < 2 n − 1 p^{<}<\mathbf{2}^{n}-1 p<<2n1 (n级线性移位寄存器) 的同一个线性移存器的输 出还与起始状态有关。

(5) 序列周期 p n = 2 n − 1 p^{n}=2^{n}-1 pn=2n1 的线性移位寄存器, 改变移位寄存起初始状态 只改变序列的起始相位, 而周期序列排序规律不变。

参考文献:

  1. Proakis, John G., et al. Communication systems engineering. Vol. 2. New Jersey: Prentice Hall, 1994.
  2. Proakis, John G., et al. SOLUTIONS MANUAL Communication Systems Engineering. Vol. 2. New Jersey: Prentice Hall, 1994.
  3. 周炯槃. 通信原理(第3版)[M]. 北京:北京邮电大学出版社, 2008.
  4. 樊昌信, 曹丽娜. 通信原理(第7版) [M]. 北京:国防工业出版社, 2012.

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

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

相关文章

期末复习【网络安全】

期末复习【网络安全】 前言推荐期末复习第1章 引言1.1 计算机安全概念1.2 OSI安全体系结构 61.3 安全攻击 71.3.1 被动攻击1.3.2 主动攻击 第2章 对称加密和消息机密性2.1 对称加密原理 232.1.3 Feistel密码结构 25 2.2 对称分组加密算法 272.2.1 数据加密标准2.2.2 三重DES2.2…

【C#】并行编程实战:任务并行性(下)

本章继续介绍任务并行性&#xff0c;因篇幅所限&#xff0c;本章为下篇。 6、处理任务异常 所有优秀的程序员都擅长高效地处理异常&#xff0c;这也是并行编程最重要的方面之一。任务并行库&#xff08;TPL&#xff09;提供了一种高效的设计来处理异常&#xff1a;任务中发生的…

山西电力市场日前价格预测【2023-06-26】

日前价格预测 预测明日&#xff08;2023-06-26&#xff09;山西电力市场全天平均日前电价为395.92元/MWh。其中&#xff0c;最高日前价格为477.34元/MWh&#xff0c;预计出现在19: 00。最低日前电价为309.90元/MWh&#xff0c;预计出现在13: 00。以上预测仅供学习参考&#xff…

Android中的EventBus变迁史

Android中的EventBus变迁史 什么是EventBus&#xff1f; EventBus是软件架构中使用的一种通信机制&#xff0c;用于促进系统内不同组件或服务之间的事件交换。它为组件提供了一种发布和订阅事件的方法&#xff0c;从而实现松散耦合和异步通信。 EventBus充当中央集线器或消息…

SpringBoot 性能优化的主要组件及特点

SpringBoot 性能优化的主要组件及特点 简介 在开发应用程序时&#xff0c;性能是一个非常重要的因素。如果应用程序的性能不佳&#xff0c;那么它可能会影响用户的体验&#xff0c;甚至会导致系统崩溃。而在 SpringBoot 应用程序中&#xff0c;我们可以通过一些组件来优化应用…

PCB板为什么要做表面处理?你知道吗

PCB板为什么要做表面处理&#xff1f; 由于PCB上的铜层很容易被氧化&#xff0c;因此生成的铜氧化层会严重降低焊接质量&#xff0c;从而降低最终产品的可靠性和有效性&#xff0c;为了避免这种情况的发生&#xff0c;需要对PCB进行表面处理。 常见的表面处理方式包括OSP、喷…

Java虚拟机(JVM)面试题

JVM 说一下 JVM 的主要组成部分及其作用&#xff1f; 总体来说&#xff0c;方法区和堆是所有线程共享的内存区域&#xff1b;而虚拟机栈、本地方法栈和程序计数器的运行是线程私有的内存区域&#xff0c;运行时数据区域就是我们常说的JVM的内存 类加载子系统&#xff1a;根据…

SpringBoot 使用 MockMvc 进行 Web 集成测试

SpringBoot 使用 MockMvc 进行 Web 集成测试 在 SpringBoot 应用程序中&#xff0c;我们可以使用 MockMvc 进行 Web 集成测试。MockMvc 是一个测试框架&#xff0c;可以模拟 HTTP 请求和响应&#xff0c;并且可以使用 Spring MVC 的控制器进行测试。MockMvc 可以让我们测试 Sp…

Apollo分布式配置中心(一)

目录 什么是配置&#xff1f; 什么是配置中心&#xff1f; 配置中心需要满足条件 什么是Apollo&#xff1f; Apollo特性 Apollo执行流程 Apollo安装 Git地址&#xff1a; 用户手册&#xff1a; 环境准备&#xff1a; 使用idea 的git clone 拉取源码 修改Apollo\scripts…

面对AI,要(能)当“杜兰特”吗?

大家好&#xff0c;我是老三&#xff0c;先说一下这篇文章没什么干货&#xff0c;就是一篇随笔。 今天闲来无事&#xff0c;在掘金上刷到一篇文章&#xff1a;GPT-4都来了&#xff0c;我们还需要刷算法题和背八股文吗&#xff1f;&#xff1a;https://juejin.cn/post/72111208…

总结Linux 中实时查看日志的3种方法

一、前言 我们大家应该都知道如何在 Linux 中查看文件&#xff0c;比如可以使用 cat 或者 less 命令。 这对于查看静态文件来说是可以的&#xff1b;日志文件是动态的&#xff0c;其内容随时会变化&#xff0c;要监测日志文件&#xff0c;需要在日志文件内容改变时也能实时看到…

配置右键菜单功能 :一键csv转excel

配置右键菜单功能 &#xff1a;一键csv转excel 无需点开文件&#xff0c;双击即可以生成新的excel文件 步骤&#xff1a; 1、配置Python&#xff0c;安装依赖库 pip install openpyxl pip install pandas2、创建Python文件 csv_to_excel.py # -*- coding:utf-8 -*- impor…

【光伏集群、需求响应】市场模式下光伏用户群的电能共享与需求响应模型(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

团体程序设计天梯赛-练习集L2篇⑤

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;Hello大家好呀&#xff0c;我是陈童学&#xff0c;一个与你一样正在慢慢前行的普通人。 &#x1f3c0;个人主页&#xff1a;陈童学哦CSDN &#x1f4a1;所属专栏&#xff1a;PTA &#x1f381;希望各…

Vue+leaflet笔记之克里金插值

Vueleaflet笔记之克里金插值 文章目录 Vueleaflet笔记之克里金插值开发环境代码简介组件库简介安装依赖库实现思路turf生成随机数据方法一&#xff1a;kriging库插值方法二&#xff1a;kriging-contour插值(矢量)方法三&#xff1a;kriging-contour插值(栅格) 本文介绍了Web端使…

逆向工具(IDA、pyinstxtractor+uncompyle6、jadx等持续更新)

IDA Pro IDA Pro&#xff08;Interactive Disassembler Professional&#xff09;交互式反汇编器专业版&#xff0c;CTF、RE、PWN必备。 打开一个可执行文件前&#xff0c;应先用file命令或者DIE等工具&#xff0c;确定是32位还是64位&#xff0c;然后用相应的IDA工具打开可执…

ModaHub魔搭社区:商业向量数据库产品Pincone的特点与应用

目录 Pincone简介 Pincone有以下几个特点 高性能搜索 全功能管理 轻松扩容 Pincone能干什么&#xff1f; 如何接入Pincone Pincone简介 Pincone 可以算是当前最火的商业向量数据库产品了&#xff0c;它最近获得了1亿美元的B轮融资&#xff0c;估值达到7.5 亿美元&#x…

YOLOv8实战火焰和烟雾检测 (视频教程)

课程链接&#xff1a;https://edu.csdn.net/course/detail/38718 YOLOv8 基于先前 YOLO 版本在目标检测任务上的成功&#xff0c;进一步提升性能和灵活性。 本课程将手把手地教大家使用YOLOv8结合可变形卷积&#xff08;deformable convolution&#xff09;训练火焰和烟雾数…

TypeScript 【类型推断】与【类型别名】的使用解读

什么是类型推断&#xff1f; 在 TypeScript 中&#xff0c; 如果声明变量时&#xff0c;没有明确的指定类型&#xff0c;那么 TypeScript 会依照类型推论&#xff08;Type Inference&#xff09;的规则推断出一个类型。 以下代码虽然没有明确指定类型&#xff0c;但是会在编译的…

APK反编译的那些事

谷歌对dex文件的介绍&#xff1a;常量数组/字符串 DEX_FILE_MAGIC 是字节列表&#xff0c;这类字节必须出现在 .dex 文件的开头&#xff0c;以便系统将其原样识别。该值会特意包含一个换行符&#xff08;"\n" 或 0x0a&#xff09;和空字节&#xff08;"\0"…