发明名称 一种基于有限域的多进制喷泉编码和译码方法
摘要 本发明涉及一种基于有限域的多进制喷泉编码和译码方法。首先对喷泉码进行编码,得到喷泉编码序列:给定编码度分布函数μ(d),根据分布函数μ(d)随机生成一个非负整数di,将di作为编码符号vi的编码度;从K个信源符号中随机选取di个不同的符号;从有限域GF(q)中随机均匀产生di个非零值作为编码符号vi的编码系数;根据编码系数对di个不同的符号求加权和,得到编码符号vi的值,进而得到喷泉编码序列。从该喷泉编码序列中选取出长度为N(N≥K)的编码序列,记为w=[w1,w2,…,wN]T,通过主元选择和主元原位高斯消元,对其进行译码,得到最终的译码输出序列。本发明方法极大地提高了喷泉编码的编码效率,降低了喷泉码的译码复杂度,适合于各种信源长度的喷泉码应用。
申请公布号 CN101510783B 申请公布日期 2011.06.15
申请号 CN200910119741.0 申请日期 2009.03.26
申请人 北京理工大学 发明人 李祥明;安建平
分类号 H03M13/37(2006.01)I 主分类号 H03M13/37(2006.01)I
代理机构 北京理工大学专利中心 11120 代理人 张利萍
主权项 1.一种基于有限域的多进制喷泉编码和译码方法,其特征在于,包括以下步骤:定义GF(q)表示有限域,即伽罗华域,q是任意素数或者素数的正整数次幂;一个定义于有限域GF(q)的矩阵或矢量,称其非零元素的个数为该矩阵或矢量的重量;令v<sub>∞</sub>=[v<sub>1</sub>,v<sub>2</sub>,…]表示长度半无限的喷泉编码序列,一个编码符号v<sub>i</sub>的编码度表示参加该符号编码的信源符号个数,i=1,2,…;设信源的长度为K;令m=[m<sub>1</sub>,m<sub>2</sub>,…,m<sub>K</sub>]<sup>T</sup>表示信源矢量,其第j个符号取自于GF(q),j=1,2,…,K;步骤一、对喷泉码进行编码,得到喷泉编码序列v<sub>∞</sub>=[v<sub>1</sub>,v<sub>2</sub>,…];其中,编码符号v<sub>i</sub>的实现步骤,i=1,2,…,如下:首先,给定编码度分布函数μ(d),根据分布函数μ(d)随机生成一个非负整数d<sub>i</sub>,将d<sub>i</sub>作为编码符号v<sub>i</sub>的编码度;然后,从K个信源符号中随机选取d<sub>i</sub>个不同的符号,记<img file="FSB00000398561500011.GIF" wi="423" he="64" />为所选择符号的序号集合;之后,从有限域GF(q)中随机产生d<sub>i</sub>个非零值作为编码符号v<sub>i</sub>的编码系数,记这些编码系数构成的集合为<img file="FSB00000398561500012.GIF" wi="392" he="56" />最后,根据编码系数对d<sub>i</sub>个不同的符号求加权和,得到编码符号v<sub>i</sub>的值,即,使用公式<img file="FSB00000398561500013.GIF" wi="675" he="56" />计算编码符号v<sub>i</sub>的值;步骤二、从v<sub>∞</sub>=[v<sub>1</sub>,v<sub>2</sub>,…]中选取出长度为N的编码序列,N≥K,记为w=[w<sub>1</sub>,w<sub>2</sub>,…,w<sub>N</sub>]<sup>T</sup>,对该喷泉编码序列进行译码,得到原信源序列,实现过程如下:设接收机向译码器输入长度为N的编码序列w=[w<sub>1</sub>,w<sub>2</sub>,…,w<sub>N</sub>]<sup>T</sup>,N≥K,将编码序列w=[w<sub>1</sub>,w<sub>2</sub>,…,w<sub>N</sub>]<sup>T</sup>表示为信源序列的线性组合,即,线性方程组w=A·m,其中,A是一个N×K阶矩阵,其元素取自于GF(q),线性方程组w=A·m的加法和乘法元素是定义于有限域GF(q)的运算;利用矩阵A的稀疏特性,对喷泉编码序列w=[w<sub>1</sub>,w<sub>2</sub>,…,w<sub>N</sub>]<sup>T</sup>进行译码,过程如下:(1)对矩阵A进行主元选择对于矩阵为A的有限长喷泉编码序列w=[w<sub>1</sub>,w<sub>2</sub>,…,w<sub>N</sub>]<sup>T</sup>,高斯消元法的前向消元过程共有K步,在前向过程的第k步,k=1,2,…,K,矩阵的第k行除以其(k,k)位置的元素,然后分别将该行各适当倍数与下面的各行相加,使下面各行第k列的非零元素全都变成零,当前向过程的第k步完成时,矩阵被化为上三角形式,<img file="FSB00000398561500021.GIF" wi="266" he="65" />为第k步开始时的矩阵,A<sup>(1)</sup>=A为原始的矩阵,矩阵A<sup>(k)</sup>的前k-1列即为上三角矩阵,<img file="FSB00000398561500022.GIF" wi="82" he="59" />是待消元的剩余矩阵;在前向消去的每一步,在剩余矩阵<img file="FSB00000398561500023.GIF" wi="80" he="58" />中,选取最大填入和操作数最小的元素作为主元;剩余矩阵<img file="FSB00000398561500024.GIF" wi="80" he="57" />共有N-k+1行和K-k+1列,设<img file="FSB00000398561500025.GIF" wi="168" he="56" />是<img file="FSB00000398561500026.GIF" wi="80" he="56" />的非零元,i∈{1,…,N-k+1},j∈{1,…,K-k+1},则<img file="FSB00000398561500027.GIF" wi="167" he="59" />为一个候选主元;令r<sub>i</sub>和c<sub>j</sub>分别表示剩余矩阵<img file="FSB00000398561500028.GIF" wi="81" he="59" />第i行和第j列的重量,数值(r<sub>i</sub>-1)·(c<sub>j</sub>-1)为选择度量;使用局部填充元和局部操作数最小化的主元选择策略,在前向消去的第k步,选取剩余矩阵<img file="FSB00000398561500029.GIF" wi="80" he="60" />中最小选择度量的元作为第k步时的主元;(2)对矩阵A进行主元原位高斯消元定义B<sup>(k)</sup>=[A<sup>(k)</sup>|w<sup>(k)</sup>]为高斯消去前向过程第k步开始时的增广矩阵,则其线性方程组的系数矩阵化为A<sup>(k)</sup>,编码矢量化为w<sup>(k)</sup>,其中A<sup>(1)</sup>=A表示初始编码矩阵,w<sup>(1)</sup>=w表示输入到译码器的编码矢量;a)令计数器的步数k=1;b)设主元为<img file="FSB000003985615000210.GIF" wi="116" he="66" />记录第k步的主元行号和列号,即标记S<sub>k</sub>(i<sub>k</sub>,j<sub>k</sub>),以主元<img file="FSB000003985615000211.GIF" wi="83" he="66" />除以第i<sub>k</sub>个方程中剩下的未知数的非零系数和右端项,而后,从所有未选过主元的方程中消去第j<sub>k</sub>个未知数;c)若k<K,设置k=k+1,重复b),直至k=K;最后,采用后向迭代,求解线性方程组w=A·m中的未知量m的元素<img file="FSB000003985615000212.GIF" wi="104" he="80" />,即<maths num="0001"><![CDATA[<math><mrow><msub><mi>m</mi><msub><mi>j</mi><mi>k</mi></msub></msub><mo>=</mo><msubsup><mi>v</mi><msub><mi>i</mi><mi>k</mi></msub><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></msubsup><mo>-</mo><munder><mi>&Sigma;</mi><mrow><mi>s</mi><mo>&Element;</mo><mo>{</mo><mi>k</mi><mo>+</mo><mn>1</mn><mo>,</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>,</mo><mi>K</mi><mo>}</mo><mo>,</mo><msubsup><mi>a</mi><mrow><msub><mi>i</mi><mi>k</mi></msub><mo>,</mo><msub><mi>j</mi><mi>s</mi></msub></mrow><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></msubsup><mo>&NotEqual;</mo><mn>0</mn></mrow></munder><msubsup><mi>a</mi><mrow><msub><mi>i</mi><mi>k</mi></msub><mo>,</mo><msub><mi>j</mi><mi>s</mi></msub></mrow><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></msubsup><msub><mi>m</mi><msub><mi>j</mi><mi>s</mi></msub></msub></mrow></math>]]></maths>其中,k=1,2,…,K,由此得到译码输出序列m。
地址 100081 北京市海淀区中关村南大街5号
您可能感兴趣的专利