FEC之我见四
接上文,来详细的说明一下FEC前向纠错的具体实现:
FEC_matrix是一个比较常用的算法,Vandermonde,范德蒙矩阵是法国数学家范德蒙提出的一种各列为几何级数的矩阵。
范德蒙矩阵的定义:
V =
其第i 行、第j 列可以表示为(αi)^(j-1)。
范德蒙矩阵的性质:范德蒙矩阵行数为m,列数为n,矩阵具有最大的秩min(m, n)。
范德蒙矩阵的应用:范德蒙矩阵应用之一就是在纠错编码中,常用的纠错码Reed-solomon 编码中冗余块的编码采用的即为范德蒙矩阵。
1)码流层面上的FEC编码
在块编码中,信道编码器将对码流中连续的k个比特划分成一块,然后对这k个比特添加n-k个冗余比特,产生一个n比特的编码块。编码块经过信道后传送到接收端,这种编码块称为(n,k)块编码,其中k个比特称作信息位,n-k个比特称作校验位
码流层面上的FEC编码示意图
(n,k)可以纠正长为b比特的突发错误,其中b<=[1/2(n-k)}];如果知道发生错位的位置,那么FEC可以纠正长度为b比特的错误, b<=n-k。
2)数据包层面上的FEC编码
数据包层面上的FEC编码常用语恢复传输过程中丢失的数据包,这种FEC编码的基本思想是首先将码流分成多个分段,这些分段构成多个原始数据包,然后采用块编码,有k个原始的数据包产生n-k个冗余包,构成包含n个数据包的块,其中n>k。这个n-k个冗余包和k个数据包一起都通过信道进行传输。如果原始数据包没有丢失,那么接收端可以忽略所有的冗余包,如下图是有误码情况下FEC编解码示意图。
有误码(或丢失)情况下的FEC编解码示意图
一般地,FEC编码会存在以下问题:
1)FEC造成传输速率的增加。这是因为k个信息比特就要增加n-k个冗余比特,因此传输码率要扩大n/k倍。另外,信道误码率越高,恢复误码所需要的传输速率就越高。
2)FEC使传输时延增加。这是因为信道编码器需要得到k个数据包才能开始进行信道编码。而信道解码器也必须正确接收到k个数据包后才能开始解码。
3)FEC难以适应信道误码特征性的动态变化,只有在信道状态稳定时才能得到良好的性能。在信道状况恶化的情况下,如果信道保护不足,传输中出现的误码超出了FEC的误码恢复能力,那么FEC编码不仅没有起到保护作用反而造成传输带宽的浪费。反之,如果在信道状况良好的时候施加过多的信道保护,人会造成传输资源的浪费。因此,在无线、因特网这类时变得网络中进行视频流传输时,往往采用自适应的FEC保护机制。
RS码类纠删码:RS码类生成的矩阵为范德蒙矩阵和柯西矩阵,相应的纠删码分别为范德蒙码和柯西码。
低密度纠删码: 基于删除信道的低密度校验码(LDPC码)称为低密度纠删码,它的生成矩阵为系数矩阵。
RS码是一类有很强纠错能力的多进制BCH码,也是一类典型的代数几何码。RS码广义上属于BCH码的一个子类,但因为RS编码基于非二进制符号,所以它不但继承了BCH码抗随机误码的能力,同时又具有抗突发误码的能力,通常作为纠删码的使用。
RS码根据其生成矩阵不同,可分为范德蒙码和柯西码。
- 范德蒙码
- 定义:若选取编码生成矩阵Gkxm,使得,其中,(p为素数,r为正整数),则所得纠删码为范德蒙码,G的任意k列组成的子方阵
G’ 的转置矩阵为范德蒙矩阵,若xi(i=1,2,...,k)互不相同,则,从而,即G的任意k列组成的子方阵
G‘ 为非奇异(G的任意k列线性无关)的,因此这样得到的矩阵满足最优纠删码生成矩阵的特性。 - 柯西码
- 定义:设{x1,x2,...,xn}和{y1,y2,...,yn}是有限域F中两个元素集,若对
- (1),有xi+yi#0
- (2)对
有xi#xj和有yi#yj - 则称下图的矩阵为域F上的柯西矩阵。
- 在有限域F上,设为单位矩阵,为柯西矩阵,若取生成矩阵G=(I|C),则称所得纠删码为柯西码。
理想情况下,基于RS码的每个编码组共有n个分组,其中有k个数据分组,其余为n-k个校验分组,这n个分组在网络中传输时,接收端只要收到任意k个分组就可以恢复出全部k个数据分组,这样的码又称为极大最小距离可分码(MDS)。由于实际传输信道的丢包率经常会发生变化,当某个时段内丢包率很大时,即使胫骨RS码的信道编码保护,仍然会存在分组丢失的可能。
- 范德蒙码的纠删性能,其编码时间复杂度为O(n*n)
- 柯西码,其编码时间复杂度O(n*n)
- 由于柯西解码不用求大矩阵的逆,而且把乘法和除法运算分别转化为有限域上的加法和减法运算,可用异或运算实现,因此,柯西码运算度咋读低于范德蒙码。整体来讲RS码的缺点是编译码速度较慢,且不能避免数据的重传。
FEC之我见四的更多相关文章
- FEC之我见三
继续上文讲解: 3) 标准的RTP头结构如下所示: 其中第一个字节中的x标志位是否扩展了RTP头,RTP协议允许用户自定义的扩展,扩展的字段紧挨上述RTP固定头.RTP扩展投中承载如下信息: 1).当 ...
- FEC之我见二
前面简单说了一下FEC,以及它的配合使用的方法.下面我想详细说一下FEC算法: 曾经有位大神在帖子里这么写着:采用改进型的vandermonde矩阵RS算法.其优点算法运算复杂度更低且解决了利用矩阵构 ...
- FEC之我见一
顾名思义,FEC前向纠错,根据收到的包进行计算获取丢掉的包,而和大神沟通的结果就是 纠错神髓:收到的媒体包+冗余包 >= 原始媒体包数据 直到满足 收到的媒体包+ 冗余包 >= 原始媒 ...
- 程序员"青春饭"问题之我见
程序员"青春饭"问题之我见 声明:转载请注明出处.http://www.cnblogs.com/hzg1981/ 1. 问题描述 问题1: 什么是程序员? 在本文中程序员的定义 ...
- WPF DataBinding之我见
原创,转载请注明出处:WPF DataBinding之我见 一.DataBinding介绍 数据绑定是在应用程序 UI 与业务逻辑之间建立连接的过程. 如果绑定具有正确设置并且数据提供正确通知,则 ...
- 【repost】如何学好编程 (精挑细选编程教程,帮助现在在校学生学好编程,让你门找到编程的方向)四个方法总有一个学好编程的方法适合你
方法(一)编了这么久的程序,一直想找机会总结下其中的心得和方法,但回想我这段编程道路,又很难说清楚,如果按照我走过的所有路来说,显然是不可能的!当我看完了云风的<游戏之旅--编程感悟>和梁 ...
- DDD分层架构之我见
DDD分层架构之我见 前面介绍了应用程序框架的一个重要组成部分——公共操作类,并提供了一个数据类型转换公共操作类作为示例进行演示.下面准备介绍应用程序框架的另一个重要组成部分,即体系架构支持.你不一定 ...
- 【读后感】读《漫谈“大学生的四个learn”》之后有感
在看完<许纪霖教授在上海财经大学演讲——漫谈“大学生的四个Learn”>(下问简称<四l>)之后突然有点话想说.其实我对这篇文章有感的,所以想写这篇文章来说说看,我对四个lea ...
- 【金三银四跳槽季】Java工程师如何在1个月内做好面试准备?
目录 一.写在前面 二.技术广度的快速准备 三.技术深度的快速准备 四.基础功底的快速准备 五.下篇预告 一.写在前面 春节长假转眼已过,即将迎来的是一年一度的金三银四跳槽季. 假如你准备在金三银四跳 ...
随机推荐
- 批处理--md5校检
@echo off rem 获取文件xx.zip的MD5 for /f "delims=" %%i in ('md5.exe xx.zip') do (set md5_var=%% ...
- php单元测试标注(注解)
@after 用于指明此方法应当在测试用例类中的每个测试方法运行完成之后调用. /** * @before1 */ public function bbb() { $this->assertTr ...
- MongoDBTemplate多条件查询的问题
问题: 在使用Spring Data MongoDB 进行条件查询数据时,发现条件判断不起作用,结果会返回所有的数据. Criteria criteria = new Criteria(); crit ...
- Centos 安装libreoffice 生成office 报错信息见内容
个人博客:https://blog.sharedata.info/ 错误信息:/opt/libreoffice5.2/program/soffice.bin: error while loading ...
- iOS 线程管理的学习记录
本文转载至 http://www.2cto.com/kf/201312/265451.html 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2 ...
- python 函数的进阶
1. 动态参数 位置参数的动态参数: *args 动态接收参数的时候要注意: 动态参数必须在位置参数后面 顺序: 位置参数, 动态参数*, 默认值参数 例子: def chi(a, b, *food, ...
- GCD多线程在swift中的变化
1.异步线程加载主线程刷新 DispatchQueue.global().async { // TODO:执行异步线程网络请求 DispatchQueue.main.async(execute: { ...
- Is this its limit?
import sys import os curPath = os.path.abspath(os.path.dirname(__file__)) rootPath = os.path.split(c ...
- php7下 xhprof安装与使用
需要测试下 代码的性能,使用了 xhprof + xhgui 1. 下载xhprof, 这里下载吧 :https://github.com/longxinH/xhprof.git 2, 安装 cd x ...
- BAPI LIST
[转自 http://blog.csdn.net/minsenwu/article/details/8432081] 库存管理BAPI 库存: 1. BAPI_MATERIAL_AVAILABILIT ...