一种Raptor码的解码方法

文档序号:7750637阅读:302来源:国知局
专利名称:一种Raptor码的解码方法
技术领域
本申请涉及一种Raptor解码方法,该方法可广泛用于数字通信、数据存储、数据 压缩等技术领域。
背景技术
为有效利用移动网络资源,3GPP提出了多媒体广播多播业务(MBMS),在移动网络 中提供一个数据源向多个用户发送数据的点到多点业务。3GPP MBMS采用Raptor系统码 (一种实用的喷泉码)作为前向纠错的编码方案。喷泉码可以由K个原始分组生成任意数 量的编码分组,只要收到其中任意K (1+ ε)(ε >0)个编码分组,就能解码恢复K个原始分 组。LT码是Luby提出喷泉码的概念后给出的首个可以实用的编码方案。随后Shokrollahi 提出了 Raptor码,其主要思路是在LT编码前加入传统的纠错编码,构成串联码,纠错码作 为外码,LT作为内码,并可进行多层外码编码。由于Raptor码采用了纠错编码,因此可比 LT码接收更少的码字,就能通过自身的纠错机制实现解码,从而克服LT码所需ε偏大的问 题,并具有线性编解码时间的性质。3GPP MBMS给出的Raptor系统码是一种高效的编解码方案。但是该方案给出的解 码算法一般需要接收大于K个符号,这是因为任意接收的K个符号不一定刚好满足解码矩 阵A^a满秩,这样解码就不能一次性成功。即使N大于K,也不能100%保证一次性解码成 功,仅仅是解码成功的概率增大,即N越大,解码成功的概率越大。但是一旦解码失败,此时 的解码结果无法再用,必须在接收新的符号基础上,重启解码过程,造成解码时间比较长。

发明内容
本发明可以解决现有技术方案存在的以上问题。解码失败后,在接收新符号后,利 用当前解码失败的结果继续完成解码,大大缩短解码时间并保证解码的成功率是100%。一种Raptor码的解码方法,其特征在于,包括以下步骤步骤1 首先,至少接收K个符号,构造矩阵 其中,Isxs和Ihxh分别是S阶和H阶的单位阵,Osxh为SXH阶的零矩阵,(Guipc) SXK和(HHalf)HX(s+K)分别是LDPC校验矩阵和Half校验矩阵,(Glt)kxl是LT编码矩阵,L = S+H+K ;步骤2 对矩阵A^a进行高斯变换,变换为‘ V的模式,其中ISiXi的单位阵,0 为零矩阵,U矩阵有L行u列元素;步骤3 在对矩阵进行高斯消元法变换时,记录所有发生的列交换位置信息, 如矩阵A的j列与j'列交换,则记录j和j'的值;
3
步骤4 将矩阵U划分为i行子矩阵U_upper和L_i行子矩阵U_lower ;对U_lower 用无列交换的高斯消元法进行变换,如果U_l0Wer的秩是u,则可以将其变换成uXu的单位 阵I_u,转向步骤6 ;否则如果[10恥1·的秩u' <u,只能将U_lower转化为I_u',A矩阵 末行会有零行出现,转向步骤5 ; 步骤5 接收一个新的符号E [xk+i],其序号是xk+i,每接收一个新符号,i按1,2. . . η 递增,新符号存入D[d[L-l+i]],其中d[L-l+i] = L-1+i ;将序号&+1按LT编码算法得到一 串长度为L的数据串,可看做一个IXL的矩阵;按照步骤3记录的对矩阵Aua进行的所有 列交换位置信息,对该1 X L的矩阵按列进行列变换;然后将变换后的1 X L矩阵加入到步骤 4得到的矩阵A^a的L+i行,将该行与矩阵A^a第一行的0行交换,得到新的矩阵AuJ, 回到步骤4对矩阵怂双‘重新操作;步骤6 如果由步骤4直接转到该步骤,则U_lower将被变换成uXu的单位阵 I_u ;如果经历过步骤5,则删除矩阵AuJ的全部0行;此时再用单位阵I_u将子矩阵[ upper中的1全部消去,原矩阵A^a转化为单位阵,实现矩阵求逆,则中间符号C[c
], C[c[l]],· · ·,C[c[L-l]] =D[_],D[d[l]],...,D[d[L-l]];步骤7 用序号0,...,Κ_1,按LT编码算法得到该序号对应的矩阵Gu',用该矩阵 和中间符号c[o],C[l],. . .,C[K-1]相乘,即可解得K个源符号,实现了解码。本发明提出的Raptor解码方法,解决了以下两个问题一是为了保证解码成功的 高概率,接收到N(大于K)个符号才进行解码,延误了解码起始时间。但即使这样,也不能 保证100%的解码成功。二是一旦解码失败,此时的解码结果无法再用,必须在接收新的符 号基础上,重启解码过程,继续造成解码时间的延长。本发明可以利用解码失败的结果继续解码,忽略了解码中最复杂最耗时处理过 程,使得解码效率大大提高。


图1是本发明对Raptor码的解码方法的示意图;图2(a)是本发明运算中A的子阵的示意图;图2(b)是本发明成功时A的子阵的示意图;图3 (a)是本发明运算中A的子阵的示意图;图3(b)是本发明成功时A的子阵的示意图;图3(c)是本发明失败时A的子阵的示意具体实施例方式下面结合附图对本发明的Raptor码的解码方法进行说明。如图1所示,其具体步 骤如下步骤101 首先,接收K个符号,构造矩阵A^a ;根据下列公式 构造解码的方程矩阵,即分别构造该矩阵方程的矩阵E[Xl],...,Ε[χκ],矩阵 C
,. . .,C[L-1],以及矩阵U勺子阵(Guipc)sxk、子阵 (HnaIf) HX (S+K) 和子阵(Gu) KXL0 其中, Isxs和Ihxh分别是S阶和H阶的单位阵,Osxh为SXH阶的零矩阵,(Gldpc)sxk和(Hllalf)HX(S+K) 分别是LDPC校验矩阵和Half校验矩阵,(Glt)kxl和(Gu)nxl是LT编码矩阵。S和H的大小 参见表一。Ε[Χι],...,Ε[Χκ]是接收到的任意K个符号(一个符号为一定长度的数据串), 其序号分别为Χι,...,Χκ。CW],...,C[L-1]为解码用的中间符号。假设,编码前的原始符 号数为K。表一编解码参数定义 具体过程如下①接收K个已编码符号赋值到公式1等号左面的矩阵E[Xl],...,Ε[χκ],其中, X1, ...,Xk是这K个符号的编码序号。②按下列算法得到公式1中的子阵(Guirc)sxii,相应位置置1,其余的置0 for i = 0,· · ·,K-I doa = l+floor(i/S) % (S-I)b = i% SGldpc (b,i) = 1b = (b+a) % SGldpc (b,i) = 1b = (b+a) % S 5
Gldpc (b,i) = 1③构造公式1的子阵Hllalf = Bthx (s+k)。遍历正整数变量i,可以从等式g(i) = i xor floor (i/2))中,获得格雷码。从得 到的格雷码中,依次抽取H个汉明码重为HH的码字,每个码字都选取S+K位,将这些码字组 成Bhx(S+K)的二元矩阵,将Bhx(S+K)转置得到Gllalf矩阵。④构造公式1的子阵Gu:该构造过程采用LT编码,其中的随机数和度采用如下方式和定义伪随机数发生器的函数为Rand [X,i,m] = (V0 [ (X+i) % 256] XorV1 [ (floor (X/256) +i) % 256]) % m度生成函数Deg[V]Deg[V] =d[j],f[j_l]彡 v<f[j](0彡 ν彡 220)。由表 2 给 出参数取值范围表2度分布 另在,构造子阵Gu还用到Triple三参数生成函数A = (53591+J[K]*997) % Q ;B = (10267*(J[K] +1)) % Q ;Y = (B+X*A) % Q ;ν = Rand(Y, 0, 220);d = Deg (ν);a = 1+Rand (Y, 1,LL-1);b = RandLT (Y, 2, LL);
其中,Q = 65521,是小于65536的最小素数。LL是不小于L的最小素数。X是当 前要编码的源符号数的序号。JDC是8189个元素的数组,KS 8192。J [K]函数在编 码中起到至关重要的作用,保证矩阵从开始到最后的高斯变换都满秩。最后,用接收符号的序号Xl,. . .,χκ,按如下LT码编码算法得到对应的K行L列Gu 子阵(Glt)初始时为0矩阵,按下列算法为矩阵Gu元素置1 forX = X1, . . . , xK dowhile b > = L do b = (b+a) % LLGlt (X, b) = 1for j = 1, . . . , min (d_l,L_l) dob = (b+a) % LLwhileb > = L do b = (b+a) % LLGlt (X, b) = 1⑤将步骤101给出的公式简写为D = A · C。首先设c
= 0,c[l] = 1,· · ·,c[L-l] = L-1 ;d
= 0,d[l] = 1,· · ·,d[L-l] = L_l。SP,初始时,步骤 101 给出的公式左端为,D
, D[l],...,D[L_1] = D[d
], D[d[l]],· · ·,D[d[L-l]] = 0,· · ·,0,0,· · ·,0,E[xJ,· · ·,Ε[χκ](前面共 S+H 个 0)显然A4D = C,即中间符号C的求解是A的求逆的过程。对矩阵A进行高斯消元, 采用如下原则1)如果矩阵A的i行对i'行异或,则D[d[i]]对D[d[i']]进行异或;2)如果矩阵A的i行与i'行交换,则d[i]与d[i']进行交换;3)如果矩阵A的j列与j ‘列交换,则c [j]与c [j ‘]进行交换;则在求解成功后,C[c
],C[c[l]], ... , C[c[L-l]] = D[d
], D[d[l]],..., D[d[L-l]]。步骤102 将矩阵A变换为‘U模式,如图2(b)所示。具体过程如下将矩阵A通过前述的高斯消元法按如下子矩阵的划分方式逐步变换,图2中示出 矩阵A的变换情况,其中ISiXi的单位阵,0为零矩阵,U矩阵有L行u列元素。初始时, 图2 (a)中的子阵V就是矩阵A,没有子阵I。矩阵A的每一次变换,都在矩阵V中行码重最小(码重为r)的那些行中随机选择 一行,与V首行交换。然后再将变换后的V首行的任一个1所在列交换至V首列,剩余的
r-Ι个1按列交换到A的最后。步骤2完成时,矩阵A变换为‘卩模式如图2 (b),i+u = L,
V消失,U的左面由一个单位阵I (上)和零矩阵(下)构成。步骤103 在对矩阵A进行高斯消元法变换时,记录所有发生的列交换位置信息, 如矩阵A的j列与j ‘列交换,则记录j和j ‘的值;将列交换位置信息保存到1个二维数 组rolchanged[rol_M] [2]中,并记录发生了多少次交换的数值rol_N(rol_M为最大交换 次数,rol_M ≥ rol_N)。 步骤104 将矩阵U划分为i行子矩阵U_upper和L_i行子矩阵U_lower如图3 (a)。对U_loWer用无列交换的高斯消元法进行变换。如果U_loWer的秩是U,则可以将其变换 成uXu的单位阵I_u如图3(b),步骤104成功,转向步骤106。否则秩u' <u,只能将U_ lower转化为I_u',A矩阵末行会有零行出现如图3 (c),则步骤104失败,转向步骤105。步骤105 接收一个新的符号E [xK+i],其序号是xK+i (运行到此步,每接收一个新符 号,i按1,2...递增),新符号存入D[d[L-l+i]],其中d[L-l+i] =L-l+i。用序号xK+i按 步骤101中④所述的LT编码算法得到一串长度为L的数据串,可看做一个IXL的矩阵;按 照步骤103记录的对矩阵进行的所有列变换,对该IXL的矩阵按列都进行列变换 ’然 后将变换后的1 XL矩阵加入到步骤104得到的矩阵A的L+i行,将该行与矩阵第一行的0 行交换,得到新的矩阵A',回到步骤104对矩阵A'重新操作;步骤106 如果步骤104成功,则U_lower可以将其变换成uXu的单位阵I_u ;如 果经历过步骤105,则删除矩阵A'尾部的0行。此时再用单位阵I_u将子矩阵U_Upper中 的1全部消去,原矩阵A转化为单位阵,实现矩阵求逆,则中间符号C[c W]],C[c[l]],..., C[c[L-l]] =D[d
],D[d[l]],...,D[d[L-l]];步骤107 用序号0,. . .,K-I,按步骤101中④所述的LT编码算法得到该序号对 应的矩阵Gu',用该矩阵和中间符号C W],C[l],. . .,C[K-1]相乘,即可解得K个源符号。 解码成功。本发明解决了现有技术中不能增量解码的问题,给出了线性解码时间的方法。由 于现有技术一旦解码不成功就必须重启整个解码过程,而本发明可以利用解码失败的结果 继续解码,忽略了解码中最复杂最耗时处理过程,使得解码效率大大提高。与现有技术相比,本发明提出的Raptor码的解码方法,可以实现1、解码从接收K 个符号开始,此时已经有较高的解码成功概率;2、即使解码不成功,只需继续接收1个(2个 以上更没有问题)新的符号,利用解码失败的结果,就可以继续解码,直至解码成功。以上仅为本发明的优选实施案例而已,并不用于限制本发明,对于本领域的技术 人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所做的任何修 改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
一种Raptor码的解码方法,其特征在于,包括以下步骤步骤1首先,至少接收K个符号,构造矩阵其中,IS×S和IH×H分别是S阶和H阶的单位阵,OS×H为S×H阶的零矩阵,(GLDPC)S×K和(HHalf)H×(S+K)分别是LDPC校验矩阵和Half校验矩阵,(GLT)K×L是LT编码矩阵,L=S+H+K;步骤2对矩阵AL×L进行高斯变换,变换为的模式,其中I为i×i的单位阵,O为零矩阵,U矩阵有L行u列元素;步骤3在对矩阵AL×L进行高斯消元法变换时,记录所有发生的列交换位置信息,如矩阵A的j列与j′列交换,则记录j和j′的值;步骤4将矩阵U划分为i行子矩阵U_upper和L-i行子矩阵U_lower;对U_lower用无列交换的高斯消元法进行变换,如果U_lower的秩是u,则可以将其变换成u×u的单位阵I_u,转向步骤6;否则如果U_lower的秩u′<u,只能将U_lower转化为I_u′,A矩阵末行会有零行出现,转向步骤5;步骤5接收一个新的符号E[xk+i],其序号是xk+i,每接收一个新符号,i按1,2...n递增,新符号存入D[d[L-1+i]],其中d[L-1+i]=L-1+i;将序号xk+i按LT编码算法得到一串长度为L的数据串,可看做一个1×L的矩阵;按照步骤3记录的对矩阵AL×L进行的所有列交换位置信息,对该1×L的矩阵按列进行列变换;然后将变换后的1×L矩阵加入到步骤4得到的矩阵AL×L的L+i行,将该行与矩阵AL×L第一行的0行交换,得到新的矩阵AL×L′,回到步骤4对矩阵AL×L′重新操作;步骤6如果由步骤4直接转到该步骤,则U_lower将被变换成u×u的单位阵I_u;如果经历过步骤5,则删除矩阵AL×L′的全部0行;此时再用单位阵I_u将子矩阵U_upper中的1全部消去,原矩阵AL×L转化为单位阵,实现矩阵求逆,则中间符号C[c
],C[c[1]],...,C[c[L-1]]=D[d
],D[d[1]],...,D[d[L-1]];步骤7用序号0,...,K-1,按LT编码算法得到该序号对应的矩阵GLT′,用该矩阵和中间符号C
,C[1],...,C[K-1]相乘,即可解得K个源符号,实现了解码。FSA00000130420400011.tif,FSA00000130420400012.tif
2.根据权利要求1所述的方法,其特征在于,在所述步骤3中将列交换位置信息保存 到1个二维数组rol_Changed[rol_M] [2]中,并记录发生了多少次交换的数值rol_N,rol_ M为最大交换次数,rol_M彡rol_N。
全文摘要
本发明公开了一种Raptor码的解码方法。由于现有的Raptor解码技术为了保证一次性解码成功的高概率,接收的符号数较多,而且一旦解码不成功就必须重启整个解码过程。本发明提出的方法,能够从可能解码成功的最少符号开始解码,如解码不成功,只需继续接收1个新符号,利用解码失败的结果继续解码,直至解码成功。本发明解决了现有技术解码算法中高斯消元对矩阵线性关系的破坏这一问题。改进方法简单,开销小,增强了解码实时性,使其实用性大大加强。
文档编号H04L1/00GK101882972SQ20101019184
公开日2010年11月10日 申请日期2010年6月4日 优先权日2010年6月4日
发明者张远, 徐伟掌, 杨占昕, 杨爽, 石东新 申请人:中国传媒大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1