当前位置: 首页 > news >正文

莱芜网站优化有哪些谷歌云做网站服务器

莱芜网站优化有哪些,谷歌云做网站服务器,光明楼网站建设,高端上海网站设计公司文章目录 前言一、什么是信道编码#xff1f;二、信道编码的基本逻辑—冗余数据1、奇偶检验码2、重复码 三、编码率四、4G 和 5G 的信道编码1、卷积码2、维特比译码#xff08;Viterbi#xff09;—— 概率译码3、LTE 的咬尾卷积码4、LTE 的 turbo 码 五、MATLAB 仿真1、plo… 文章目录 前言一、什么是信道编码二、信道编码的基本逻辑—冗余数据1、奇偶检验码2、重复码 三、编码率四、4G 和 5G 的信道编码1、卷积码2、维特比译码Viterbi—— 概率译码3、LTE 的咬尾卷积码4、LTE 的 turbo 码 五、MATLAB 仿真1、ploy2trellis 函数①、无负反馈的函数调用方法②、有负反馈的函数调用方法 2、convenc() 函数3、vitdec() 函数4、MATLAB 仿真 前言 本文对数字通信技术中的信道编码及译码进行学习记录。 数字通信就是把一切声音图像文字都变成 01 这种二进制代码这种转换过来的数据我们可以称之为原始数据 bit 那么这种原始的 bit是否可以直接调制转换成电磁波发送出去呢答案是不可以因为电磁波传输过程中一定会存在于扰和噪声从而产生差错 下图为数字通信系统模型 数字通信系统模型 一、什么是信道编码 首先引用书上的定义对信道编码进行一下讲解 信道编码Channel Coding的作用是进行差错控制。数字信号在传输过程中会受到噪声等影响而发生差错。为了减小差错,信道编码器对传输的信息码元按一定的规则加入保护成分(监督码元),组成所谓“抗干扰编码”。接收端的信道译码器按相应的逆规则进行解码,从中发现错误或纠正错误,提高通信系统的可靠性。 下面我们举个例子形象描述一下。 假设我们把 “你好” 这两个字转换成 01 代码比如用 00 和 01 分别代表你和好在我们发送 00 时因干扰原因导致我们发送的数据变成了 01那么我们发送的信息本来应该是“你”而被接收端识别成了“好”如下图所示 我们为了抗干扰就需要增加一个步骤来让我们的数据具备“一定程度上的纠正干扰产生的差错的能力”这个步骤就叫信道编码。 二、信道编码的基本逻辑—冗余数据 在进行信道编码时需要增加冗余数据来达到抗干扰的效果以下图为例在运输花瓶时为避免花瓶运输路途中破碎我们增加一个泡沫箱子再打包后通过快递进行发送这里面的泡沫箱子及顺丰快递箱子就可以类似于冗余数据。 我们这里列举一些常用的冗余数据。 1、奇偶检验码 原始数据 100101100 奇校验1001011001校验位为 1让 1 的总数变成奇数 5偶校验1001011000校验位为 0让 1 的总数保持为偶数 4 增加的 1bit 位为校验位也就是冗余 bit 假设使用奇校验1001011001 传输过程中错 1 位1011011001可以发现错误传输过程中错 2 位0011011001发现不了错误 奇偶校验码只具备检错的能力而不具备纠错能力 2、重复码 原始信息 1 或者 0 编码 1 —— 1110 —— 000 当受到干扰导致错 1 位的时候可以达到纠错的效果 当受到干扰导致错 2 位的时候不可以达到纠错的效果 三、编码率 R K / N RK/N RK/N K K K有用 bit 数据 N N N编码后的 bit 数据 以前面的码为例原始数据 100101100 共 9 bit奇校验: 1001011001 共 10 bit编码率 R 9 / 10 0.9 R9/100.9 R9/100.9 重复码编码率 R 1 / 3 R1/3 R1/3 1/3 编码表示 3 个编码后的比特中包含 1 个有效比特1/4 编码表示 4 个编码后的比特中包含 1 个有效比特 编码率越低包含的几余信息越多纠错的能力越强抗干扰的能力越强传输的有效数据越小 四、4G 和 5G 的信道编码 4G 的信道编码包括卷积码和 turbo 码5G 的信道编码包括 polar 和 ldpc 码。 1、卷积码 卷积码一般使用 n K N nKN nKN表示卷积编码器。 K K K 表示输入的 K 个 bit 需要编码的原始 bit 数 n n n 表示输出的 n n n 个 bit 编码后的 bit 数编码率 R K / n RK/n RK/n N N N编码约束度 (实际上就是寄存器的个数) 卷积码将 K K K 个信息码元编为 n n n 个码元时这 n n n 个码元不仅与当前的 K K K 个信息有关也与前面的 N − 1 N-1 N−1 段信息有关 参考下面的例子 2、维特比译码Viterbi—— 概率译码 维特比译码是根据接收序列在网格图上找出一条与接收序列汉明距离最小的一种算法 汉明距离 Hamming两个码组对应码位上具有不同二进制码元的位数为两码组的距离简称码距 举个例子 码 1000 码 2101 这两个码的码距为 2 下面我们继续举个例子 假设发送信息位是 1101编码后发送的序列为 111 110 010 100接收序列111 010 010 110 注意上面接收序列由于干扰导致出现了差错现在我们看一下维特比译码是如何纠错的 每一种序列都是网格图上的一条路径0 用实线1 用虚线 因此最后解码序列为111 110 010 100达到了纠错的效果 如果更复杂的可能会出现有两个汉明距离那么我们就会随机选作为它的译码导致出现错了这也就是为什么维特比译码叫做概率译码 3、LTE 的咬尾卷积码 4、LTE 的 turbo 码 五、MATLAB 仿真 在进行卷积编码的过程中使用的函数是 convenc() 函数和 vitdec() 函数同时需要 poly2trellis() 函数。 1、ploy2trellis 函数 先看 poly2trellis() 函数用来生成卷积编码所需要的网表。ploy2trellis 函数有两种调用形式 trellispoly2trellis(ConstraintLength,CodeGenerator); trellispoly2trellis(ConstraintLength,CodeGenerator,...FeedbackConnection)后者应用于有负反馈的情形 这个函数相当于定义了编码器中寄存器的结构一般来说在查看卷积编码的相关资料中都是类似于2,1,3这种结构但是这个函数只需要两个参数 ConstraintLength参数代表约束长度CodeGenerator 代码生成器指定为八进制数的K乘N矩阵、多项式字符向量的K乘N单元阵列或K乘N字符串阵列。CodeGenerator 为编码器的 K 个输入比特流中的每一个指定 N 个输出连接。 通俗理解这两个参数的含义和作用首先约束长度决定了再译码时候的回溯深度的大小根据不同的编码速率有不同的关系技术文档中对此有介绍 根据设定的 nk和 L 值来确定如对于 (2,1,3) 结构类型的卷积编码器其中 rate k/n 1/2对应第一种计算方式那么回溯深度为 5*(L-1)结果为10在进行译码的时候利用这个值对齐或者截断这个在下面使用过程中会有。 回到函数本身如设计 (2,1,7) 类型的编码器可以用 L 7; trellis poly2trellis(L,[171 133]);其中的第二个参数是 8 进制数据的表现形式对应二进制为[111_1111, 101_1011]。可以理解为进入1bit数据输出2bit数据所以这个是2维的同时这个7bit每一位代表寄存器的抽头可以根据这个画出编码器的连接形式。 ploy2treliis 顾名思义多项式 ploy 到网格图 trellis 卷积码的生成多项式可以由一系列多项式描述我们将多项式转化为 trellis 结构这种结构又可以作为 matalb 中线形卷积编码函数 convenc 和或者其解码如 Viterbi 解码函数 vitdec的输入。 ①、无负反馈的函数调用方法 324卷积码2 进 3 出记忆长度约束长度Lmax{43}15输入数据共两个对应两行寄存器第一行有 4 个移位寄存器第二行 3 个分别对应约束长度413154。那么 ConstraintLength 就应该是[5,4]。第一位输出由第一行寄存器的“贡献”生成序列为1001123第二位输出由第一行寄存器的“贡献”生成序列为1110135第三位输出由第一行寄存器的“贡献”生成序列为000000 第一位输出由第二行寄存器的“贡献”生成序列为00000第二位输出由第二行寄存器的“贡献”生成序列为 01015第三位输出由第二行寄存器的“贡献”生成序列为 101113 那么 CodeGenerator 就是[23,35,0; 0,5,13] 运行 trellispoly2trellis([5,4],[23,35,0;0,05,13])输出如下 trellis 包含以下字段的 struct:numInputSymbols: 4numOutputSymbols: 8numStates: 128nextStates: [128×4 double]outputs: [128×4 double]numInputSymbols: 4 输入状态数表示两路输入共有 4 2 k 2^k 2k k k k为输入的路数种状态分别为 00011011 numOutputSymbols: 8 输出状态数表示输出共有 8 2 n 2^n 2n n n n为输出的路数种状态分别为 000001010011100101110111 numStates: 128 寄存器状态数当前状态数是 128 2 7 2^7 277 是寄存器的总个数) 状态是 7 为二进制数 nextStates: [128x4 double] 下一个状态nextState 是 numStates-by-2k 的矩阵。他表示所有当前状态和当前输入组合所产生的下一状态。相当于马尔科夫链的状态转移表。行表示各种不同的当前状态依次表示从全 0 状态到全 1 状态。 outputs: [128x4 double] 输出outputs 也是 numStates-by-2k 的矩阵。他表示所有当前状态和当前输入组合所产生的输出8进制表示。行和列的意义的nextState相同。 trellis.nextStates(1:5,:) ans 0 64 8 720 64 8 721 65 9 731 65 9 732 66 10 74上面我们列出了nextStates的 1-5 行 11的元素表示在全 0 状态0000000时输入 00 时的下一个状态还是全 00000000即所有的寄存器的结果还都是 012的元素表示在全 0 状态0000000时输入 01 时的下一个状态是 641000000 ……21的元素表示在 1 状态0000001时输入为 00 时的下一个状态时全 00000000 …… ②、有负反馈的函数调用方法 考虑如下卷积码生成图 同理记忆长度约束长度L415生成第一位输出由寄存器的“贡献”生成序列为1111137第二位输出由寄存器的“贡献”生成序列为1101133那么 CodeGenerator 就是 [3733]负反馈多项式为为1111137 运行 trellis poly2trellis(5,[37 33],37)输出如下 trellis 包含以下字段的 struct:numInputSymbols: 2numOutputSymbols: 4numStates: 16nextStates: [16×2 double]outputs: [16×2 double]结构体中的变量含义与第一节一致。 2、convenc() 函数 再看 convenc() 函数 codedout convenc(msg,trellis) codedout convenc(msg,trellis,puncpat)简单使用卷积编码就用这个第1种调用方式就可以了其中 msg参数是需要编码的信息这个需要输入0,1二进制数据。trellis参数就是上面函数生成的结果传输到这里。 在使用时需要注意的是 msg 数据的长度要是k的整数倍同时利用上面的约束长度计算回溯深度利用回溯深度在信息后面添加0。 3、vitdec() 函数 最后看译码函数 decodedout vitdec(codedin,trellis,tbdepth,opmode,dectype) decodedout vitdec(codedin,trellis,tbdepth,opmode,soft,nsdec) decodedout vitdec(codedin,trellis,tbdepth,opmode,dectype,puncpat)译码函数的参数相对校多主要是需要设置模式 codedin参数是需要译码的结果模式选择硬判决的时候必须输入是整数模式选择软判决的时候可以输入小数。trellis参数与编码函数的一致。tbdepth这个参数参数就是回溯深度前面利用约束长度计算的结果。opmode 这个参数有三个不同的选项分别为contterm和trunc。dectype参数用来设置是硬解码hard还是软解码soft硬解码输入的数据都是0和1软解码可以说输入小数。 有一点需要注意的是对于term和trunk模式回溯深度tbdepth必须是一个正整数并且小于或等于输入编码中的输入符号数说白了就是在编码前的信息msg长度就得大于等于回溯深度要不然不够译码的。 这三个参数的差别term模式下没有延时就是译码的第一个数据就是编码的第一个数据。trunc参数也没有延时cont参数有延时是回溯深度。还有差别就是连续编码的区别。 4、MATLAB 仿真 利用(2,1,7)结构的形式进行卷积编译码如下是测试代码选择cont 和hard模式。 close all; clear; clc;msg_source [randi([0 1],1,50),zeros([1,30])]; % 这行代码生成一个长度为80的随机二进制消息序列。它使用randi函数在0和1之间随机生成50个比特并在后面添加30个零。% 这些变量定义了卷积码的编码率。在这个例子中n表示输出比特数k表示输入比特数因此编码率为1/2。 n 2; k 1; rate k/n; % rate为 1/2% 这些变量定义了卷积码的约束长度和回溯深度。在这个例子中约束长度为7回溯深度为5*(7-1)30。 L 7; tblen 5*(L-1); % 回溯深度trellis poly2trellis(L,[171 133]); % 使用poly2trellis函数生成一个约束长度为7的卷积码的Trellis结构。生成多项式为[171 133]定义了卷积码的生成过程。 code_data convenc(msg_source,trellis); % 使用convenc函数对消息序列进行卷积码编码。它将msg_source输入到卷积码编码器中使用之前生成的Trellis结构得到编码后的数据序列code_data。 zerozeros(1,2*tblen); % 生成一个长度为2*tblen的零向量。 code_data[code_data(:,1:end),zero]; % 在编码数据的末尾添加了零以增加解码过程的缓冲区大小 d vitdec(code_data,trellis,tblen,cont,hard); % 使用vitdec函数对编码数据进行卷积码译码。它使用之前生成的Trellis结构和回溯深度采用硬判决方式进行译码得到译码后的数据序列d。 d d(tblen*k1:end); % 从译码数据中去除多余的部分保留原始消息序列的长度。 figure(1); stairs(msg_source(1:end),:*r); % 绘制原始消息序列的阶梯图使用红色星号表示 hold on; % 保持图形窗口的当前内容以便后续的绘图命令在同一窗口中显示。 stairs(d,:b); % 绘制译码后的消息序列的阶梯图使用蓝色加号表示。 ylim([-0.1,1.1]); grid on; legend(原始信息,恢复信息);仿真结果 可以看到编码后的 80bit 数据译码后与原数据一一对应。 参考文献 1、【小白也能看懂】信道编码—卷积码等相关内容 2、卷积码matlab实现之ploy2trellis函数 3、信道编码MATLAB使用卷积编译码函数 我的qq2442391036欢迎交流
http://www.yutouwan.com/news/266548/

相关文章:

  • 中国住房城乡建设厅网站济南自助建站模板
  • 一个网站的seo优化有哪些网络编程课程
  • 广州哪里有网站开发网站seo课程
  • 网站按城市做分站浙江网站建设哪家权威
  • 网站开发所有工具多大wordpress 菜单分类
  • 网站规划的原则是什么大淘客联盟做网站
  • 网站建设的公司地址如何在百度搜索到自己的网站
  • 辽宁定制网站建设推广南京中石化第五建设有限公司
  • 网站空间支持功能肇庆企业网站建设
  • 购物网站设计意义营销型网站建设应该注意什么
  • 胶州市 网站建设建网站html5
  • 全国做网站的公网站建设的需要是什么
  • 宁波做网站建设网站还难做啊
  • 做网站要几天网站建设与维护题库
  • 有创意的30个网站做网站坂田
  • 网站搜索用户体验自己可以学做网站吗
  • 网站制作地点网页制作与网站建设实战大全pdf
  • 嘉兴网站广优化公司dedecms视频网站模板
  • 做pc端网站怎么样网站恶意点击软件
  • 简单的电商网站厦门网红打卡景点有哪些
  • 萍乡网站建设网页界面设计以什么为载体
  • 中山网站优化排名河北建设网工程信息网
  • 整站seo优化推广wordpress 上传excel
  • 网站设计公司网站制作费用学做网站要学哪些
  • 网站如何制作注册阿里巴巴网站图片怎么做的
  • dw做的网站上传网站单页面策划
  • 武昌专业的网络推广团队seo推广方法
  • 怎么盗号网站怎么做族谱网站开发
  • 苏州网站建设机构网站建设费用的账务处理
  • 网站建设中 html5 模板下载市场推广