必威体育Betway必威体育官网
当前位置:首页 > IT技术

Reed Solomon编码

时间:2019-09-28 12:15:27来源:IT技术作者:seo实验室小编阅读:90次「手机版」
 

reed-solomon

参考文章:https://blog.csdn.net/shelldon/article/details/54144730

参考文章:https://blog.csdn.net/shelldon/article/details/54729687

Reed Solomon利用范特蒙矩阵或者柯西矩阵的特性来实现纠错码的功能。下面着重介绍Reed Solomon编解码原理:

一、Reed Solomon编码

把输入数据视为向量D=(D1,D2,..., Dn), 编码后数据视为向量(D1, D2,..., Dn, C1, C2,.., Cm),RS编码可视为如下图所示矩阵运算。

编码矩阵B必须具有任意子矩阵可逆的特性。

二、Reed Solomon解码

RS最多能容忍m个数据块被删除,m包括实际数据和冗余数据。 数据恢复的过程如下:

(1)假设D1、D4、C2丢失,从编码矩阵中删掉丢失的数据块/编码块对应的行。 

根据图1所示RS编码运算等式,可以得到如下B' 以及等式。

(2)由于B' 是可逆的,记B'的逆矩阵为 (B'^-1),则B' * (B'^-1) = I 单位矩阵。两边左乘B' 逆矩阵。

(3)得到如下原始数据D的计算公式

三、有限域

假设每一个向量元素由8比特组成,那么矩阵相乘后的结果必然要超过8比特的范围,为了解决这个问题,我们引入有限域的概念。

1、域

一组元素的集合,以及在集合上的四则运算,构成一个域。其中加法和乘法必须满足交换、结合和分配的规律。加法和乘法具有封闭性,即加法和乘法结果仍然是域中的元素。  

域中必须有加法单位元和乘法单位元,且每一个元素都有对应的加法逆元和乘法逆元。但不要求域中的 0有乘法逆元。  

2、有限域

有限域又称为伽罗华域,其仅含有限多个元素的域。GF(2^w)表示含有2^w个元素的有限域。那么在计算机中常用的有限域是GF(2^8)

3、单位元

Identity Element,也叫幺元(么元),通常使用e来表示单位元。单位元和其他元素结合时,并不会改变那些元素。

对于二元运算*,若a*e=a,e称为右单位元;若e*a=a,e称为左单位元,若a*e=e*a=a,则e称为单位元。

4、逆元

对于二元运算*,若a*b=e,则a称为b的左逆元素,b称为a的右逆元素。若a*b=b*a=e,则称a为b的逆元,b为a的逆元。

5、本原多项式

域中不可约多项式是不能够进行因子分解的多项式, 本原多项式 (primitive polynomial)是一种特殊的不可约多项式。当一个域上的本原多项式确定了,这个域上的运算也就确定了。本原多项式一般通过查表可得,同一个域往往有多个本原多项式。  通过将域中的元素化为多项式形式,可以将域上的乘法运算转化为普通的多项式乘法再模本原多项式。

在计算机中有限域GF(2^8)常用的本原多项式是x^8+x^4+x^3+x^2+1。

6、多项式运算

对于GF(2^w)上的多项式计算,多项式系数只能取 0或1。所以加法等同于异或运算,减法等同于加法。

四、本原多项式

我们可以通过本原多项式生成一个有限域的所有元素,生成步骤如下:

设P(x)是GF(2^w)上的某一个本原多项式,GF(2^w)的元素产生步骤是: 

(1)给定一个初始集合,包含0,1和元素x,即 {0,1,x}; 

(2)将这个集合中的最后一个元素,即x,乘以x,如果结果的度大于等于w,则将结果mod P(x)后加入集合;

(3)直到集合有2^w个元素,此时最后一个元素乘以x再mod P(x)的值等于1。

例如,GF(2^4)含有16个元素,本原多项式为P(x)=x^4+x+1,除了 0、1外,另外14个符号均由本原多项式生成。

注意到x^14=x^3+1,此时计算x^15=x^14*x=(x^3+1)*x=x^4+x=1,生成结束。

生成元素多项式表示二进制表数值表示推导过程
0000000 
x^0x^000011 
x^1x^100102 
x^2x^201004 
x^3x^310008 
x^4x+100113x^3*x = x^4 mod P(x) = x+1
x^5x^2+x01106x^4*x = (x+1)*x = x^2+x
x^6x^3+x^2110012 
x^7x^3+x+1101111x^6*x = (x^3+x^2)*x = x^4 +x^3 mod P(x) = x^3+x+1
x^8x^2+101015 
x^9x^3+x101010 
x^10x^2+x+101117x^9*x=(x^3+x)*x = x^4+x^2 mod P(x) = x^2+x+1
x^11x^3+x^2+x111014 
x^12x^3+x^2+x+1111115x^11*x=(x^3+x^2+x)*x = x^4+x^3+x^2 mod P(x) = x^3+x^2+x+1
x^13x^3+x^2+1110113x^12*x=(x^3+x^2+1  )*x = x^4+x^3+x mod P(x)= x^3+1
x^14x^3+110019x^13*x=(x^3+x^2+1)*x = x^4+x^3+x mod P(x) = x^3+1
x^15100011x^14*x = (x^3+1)*x = x^4+x mod P(x) = 1

五、查表法

根据上述生成有限域的原理,我们也可以看出有限域中的乘法规则

x^7*x^9 = (x^3+x+1)*(x^3+x)mod P(x) 

这种多项式相乘和取模运算量是很大的。

由于指数运算是满足定理 :假设a=g^n,b=g^m。那么a*b = g^n* g^m = g^(n+m)。所以我们可以根据a和b,分别查表得到n和m,然后查表g^(n+m)即可。这就叫做查表法。它可以快速的提升矩阵相乘的运算速度。

根据上文的GF(2^4)的元素表示,生成gflog表和gfilog表如下:

在GF(2^4)域上的乘法和除法,可以通过查表法得到

乘法:

7 * 9 = gfilog[gflog[7] + gflog[9]] = gfilog[10 + 14]

= gfilog[24 mod 15] = gfilog[9] = 10

除法:

13 / 11 = gfilog[gflog[13] - gflog[11]] =  gfilog[13 - 7] = gfilog[6] = 12

相关阅读

Unicode 编码理解

Unicode(统一码、万国码、单一码)于1990年开始研发,1994年正式公布,是计算机领域里一项业界标准,包括字符集,编码方案等。Unicode是为了

淘宝助理5.2Beta 商家编码提取工具

随着淘宝网店的不断发展,一些开店必备工具升级也很快,很多点店家有点跟不上脚步了,特别是淘宝助理。今天,指导大家如何开网店的小编

urlencode编码/urldecode解码作用及使用方法

urlencode和urldecode释义urlencode是一个函数,可将字符串以URL编码,用于编码处理。URL编码(URL encoding),也称作百分号编码(Perce

全国城市区域编码

cityCode cityName provinceName 130100 石家庄市  河北省  130200 唐山市  河北省  130300 秦

词性标注词性编码表

《PFR人民日报标注语料库》词性编码表PFR语料库是对人民日报1998年上半年的纯文本语料进行了词语切分和词性标注制作而成的,严格按

分享到:

栏目导航

推荐阅读

热门阅读