发明名称 一种差错控制方法
摘要 本发明公开了一种数据传输的差错控制方法和系统,适用于通信领域,在该领域中使用本发明的方法或系统,可有效地将丢失的数据恢复,提高数据的完整性。本发明的方法包括生成编码系数和冗余包、生成解码系数和恢复信源等步骤,发信端以n个信源生成m个冗余包,将信源及冗余包都发送往收信端,收信端收到的信源个数与冗余包个数之和只要大于或等于n,就能恢复出所有n个信源。本发明利用柯西矩阵及GF(2q)域内的运算,巧妙地实现了信息量最大化及运算量最小化。在多播及广播通信中使用本发明的差错控制方法或系统,可取得理想的效果。
申请公布号 CN101505201B 申请公布日期 2011.08.31
申请号 CN200910030309.4 申请日期 2009.03.18
申请人 吕晓雯;刘怡梅;杜玲 发明人 吕晓雯;刘怡梅;杜玲
分类号 H04L1/00(2006.01)I;H04L12/18(2006.01)I 主分类号 H04L1/00(2006.01)I
代理机构 南京苏高专利商标事务所(普通合伙) 32204 代理人 柏尚春
主权项 1.一种数据传输的差错控制方法,其特征是:该方法包括生成冗余包的方法和信源恢复的方法,其中生成冗余包的方法包括以下步骤:(1)构造编码系数矩阵A:假设有n个信源X<sub>1</sub>、X<sub>2</sub>、X<sub>3</sub>......X<sub>n</sub>,m为需要生成的冗余包的数量,选一个数域P,保证每个信源X<sub>j</sub>都在数域P内,在数域P中任取m个不同的值K<sub>i</sub>(1≤i≤m),任取n个不同的值L<sub>j</sub>(1≤j≤n),并且满足K<sub>i</sub>+L<sub>j</sub>≠0,取编码系数矩阵A为如下柯西矩阵:<maths num="0001"><![CDATA[<math><mrow><mi>A</mi><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>A</mi><mn>11</mn></msub></mtd><mtd><msub><mi>A</mi><mn>12</mn></msub></mtd><mtd><msub><mi>A</mi><mn>13</mn></msub></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msub><mi>A</mi><mrow><mn>1</mn><mi>n</mi></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>A</mi><mn>21</mn></msub></mtd><mtd><msub><mi>A</mi><mn>22</mn></msub></mtd><mtd><msub><mi>A</mi><mn>23</mn></msub></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msub><mi>A</mi><mrow><mn>2</mn><mi>n</mi></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>A</mi><mn>31</mn></msub></mtd><mtd><msub><mi>A</mi><mn>32</mn></msub></mtd><mtd><msub><mi>A</mi><mn>33</mn></msub></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msub><mi>A</mi><mrow><mn>3</mn><mi>n</mi></mrow></msub></mtd></mtr><mtr><mtd><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd></mtd><mtd></mtd><mtd></mtd><mtd></mtd></mtr><mtr><mtd><msub><mi>A</mi><mrow><mi>m</mi><mn>1</mn></mrow></msub></mtd><mtd><msub><mi>A</mi><mrow><mi>m</mi><mn>2</mn></mrow></msub></mtd><mtd><msub><mi>A</mi><mrow><mi>m</mi><mn>3</mn></mrow></msub></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msub><mi>A</mi><mi>mn</mi></msub></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mfrac><mn>1</mn><mrow><msub><mi>K</mi><mn>1</mn></msub><mo>+</mo><msub><mi>L</mi><mn>1</mn></msub></mrow></mfrac></mtd><mtd><mfrac><mn>1</mn><mrow><msub><mi>K</mi><mn>1</mn></msub><mo>+</mo><msub><mi>L</mi><mn>2</mn></msub></mrow></mfrac></mtd><mtd><mfrac><mn>1</mn><mrow><msub><mi>K</mi><mn>1</mn></msub><mo>+</mo><msub><mi>L</mi><mn>3</mn></msub></mrow></mfrac></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><mfrac><mn>1</mn><mrow><msub><mi>K</mi><mn>1</mn></msub><mo>+</mo><msub><mi>L</mi><mi>n</mi></msub></mrow></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mrow><msub><mi>K</mi><mn>2</mn></msub><mo>+</mo><msub><mi>L</mi><mn>1</mn></msub></mrow></mfrac></mtd><mtd><mfrac><mn>1</mn><mrow><msub><mi>K</mi><mn>2</mn></msub><mo>+</mo><msub><mi>L</mi><mn>2</mn></msub></mrow></mfrac></mtd><mtd><mfrac><mn>1</mn><mrow><msub><mi>K</mi><mn>2</mn></msub><mo>+</mo><msub><mi>L</mi><mn>3</mn></msub></mrow></mfrac></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><mfrac><mn>1</mn><mrow><msub><mi>K</mi><mn>2</mn></msub><mo>+</mo><msub><mi>L</mi><mi>n</mi></msub></mrow></mfrac></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mrow><msub><mi>K</mi><mn>3</mn></msub><mo>+</mo><msub><mi>L</mi><mn>1</mn></msub></mrow></mfrac></mtd><mtd><mfrac><mn>1</mn><mrow><msub><mi>K</mi><mn>3</mn></msub><mo>+</mo><msub><mi>L</mi><mn>2</mn></msub></mrow></mfrac></mtd><mtd><mfrac><mn>1</mn><mrow><msub><mi>K</mi><mn>3</mn></msub><mo>+</mo><msub><mi>L</mi><mn>3</mn></msub></mrow></mfrac></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><mfrac><mn>1</mn><mrow><msub><mi>K</mi><mn>3</mn></msub><mo>+</mo><msub><mi>L</mi><mi>n</mi></msub></mrow></mfrac></mtd></mtr><mtr><mtd><mo></mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo></mo></mtd><mtd></mtd><mtd></mtd><mtd></mtd><mtd></mtd></mtr><mtr><mtd><mfrac><mn>1</mn><mrow><msub><mi>K</mi><mi>m</mi></msub><mo>+</mo><msub><mi>L</mi><mn>1</mn></msub></mrow></mfrac></mtd><mtd><mfrac><mn>1</mn><mrow><msub><mi>K</mi><mi>m</mi></msub><mo>+</mo><msub><mi>L</mi><mn>2</mn></msub></mrow></mfrac></mtd><mtd><mfrac><mn>1</mn><mrow><msub><mi>K</mi><mi>m</mi></msub><mo>+</mo><msub><mi>L</mi><mn>3</mn></msub></mrow></mfrac></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><mfrac><mn>1</mn><mrow><msub><mi>K</mi><mi>m</mi></msub><mo>+</mo><msub><mi>L</mi><mi>n</mi></msub></mrow></mfrac></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>或对柯西矩阵进行变换:将柯西矩阵乘以任意可逆矩阵得到矩阵<img file="FSB00000504875400012.GIF" wi="205" he="200" />其中K为方阵,取编码系数矩阵A=L*K<sup>-1</sup>;步骤(1)每步数学运算都采用数域P内的运算;(2)计算冗余包:取信源向量X如下:<maths num="0002"><![CDATA[<math><mrow><mi>X</mi><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>X</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><msub><mi>X</mi><mn>2</mn></msub></mtd></mtr><mtr><mtd><msub><mi>X</mi><mn>3</mn></msub></mtd></mtr><mtr><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd></mtr><mtr><mtd><msub><mi>X</mi><mi>n</mi></msub></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>将编码系数矩阵A乘以信源向量X,得到冗余包向量Y如下:<maths num="0003"><![CDATA[<math><mrow><mi>Y</mi><mo>=</mo><mi>A</mi><mo>*</mo><mi>X</mi><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>Y</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><msub><mi>Y</mi><mn>2</mn></msub></mtd></mtr><mtr><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd></mtr><mtr><mtd><msub><mi>Y</mi><mi>m</mi></msub></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>Y<sub>1</sub>、Y<sub>2</sub>、Y<sub>3</sub>......Y<sub>m</sub>即为m个冗余包;步骤(2)每步数学运算都采用与步骤(1)相同的数域P内的运算;发信端将n个信源及m个冗余包发送往收信端,当收信端收到的信源个数r小于n时,信源恢复的方法包括以下步骤:(3)构造解码系数矩阵B:假设收到r个信源和t个冗余包,当t大于n-r时任取n-r个冗余包,当t等于n-r时取所有的冗余包,这些冗余包记为Y<sub>u</sub>、Y<sub>v</sub>......Y<sub>w</sub>,其中u<v<……<w,取矩阵B的第1行为步骤(1)编码系数矩阵A的第u行;矩阵B的第2行为步骤(1)编码系数矩阵A的第v行......矩阵B的最后1行为步骤(1)编码系数矩阵A的第w行,构成解码系数矩阵B如下:<maths num="0004"><![CDATA[<math><mrow><mi>B</mi><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>A</mi><mrow><mi>u</mi><mn>1</mn></mrow></msub></mtd><mtd><msub><mi>A</mi><mrow><mi>u</mi><mn>2</mn></mrow></msub></mtd><mtd><msub><mi>A</mi><mrow><mi>u</mi><mn>3</mn></mrow></msub></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msub><mi>A</mi><mi>un</mi></msub></mtd></mtr><mtr><mtd><msub><mi>A</mi><mrow><mi>v</mi><mn>1</mn></mrow></msub></mtd><mtd><msub><mi>A</mi><mrow><mi>v</mi><mn>2</mn></mrow></msub></mtd><mtd><msub><mi>A</mi><mrow><mi>v</mi><mn>3</mn></mrow></msub></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msub><mi>A</mi><mi>vn</mi></msub></mtd></mtr><mtr><mtd><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd></mtd><mtd></mtd><mtd></mtd><mtd></mtd></mtr><mtr><mtd><msub><mi>A</mi><mrow><mi>w</mi><mn>1</mn></mrow></msub></mtd><mtd><msub><mi>A</mi><mrow><mi>w</mi><mn>2</mn></mrow></msub></mtd><mtd><msub><mi>A</mi><mrow><mi>w</mi><mn>3</mn></mrow></msub></mtd><mtd><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>.</mo></mtd><mtd><msub><mi>A</mi><mi>wn</mi></msub></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>(4)恢复出信源X:当t大于n-r时任取n-r个冗余包,当t等于n-r时取所有的冗余包,得到如下等式:<maths num="0005"><![CDATA[<math><mrow><mi>B</mi><mo>*</mo><mi>X</mi><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>Y</mi><mi>u</mi></msub></mtd></mtr><mtr><mtd><msub><mi>Y</mi><mi>v</mi></msub></mtd></mtr><mtr><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd></mtr><mtr><mtd><msub><mi>Y</mi><mi>w</mi></msub></mtd></mtr></mtable></mfenced></mrow></math>]]></maths>当t大于或等于n-r时,利用上等式解出n-r个未收到的信源X<sub>j</sub>;步骤(4)每步数学运算都采用与步骤(1)相同的数域P内的运算。
地址 210110 江苏省南京市江宁区将军路39号江南文枢苑C6A-201室