发明名称 基于 MFC 对话框的RS 码编码及识别方法
摘要 基于MFC对话框的RS码编码及识别方法,属于信道编码参数盲识别技术领域。该方法通过MFC对话框应用程序实现了RS码的编码和识别,从而实现了一种新的MFC对话框应用程序的实现思路,即用户只需选择或按照提示输入所需的参数,然后通过一个按钮的响应将这些参数传递到一个接口函数,该接口函数与其他所需函数的定义在另一个单独的.cpp文件中,参数进入函数体后进而实现软件。
申请公布号 CN103399749B 申请公布日期 2016.10.05
申请号 CN201310341578.9 申请日期 2013.08.07
申请人 山东大学 发明人 马丕明;王建跃;杨勇
分类号 G06F9/44(2006.01)I;H03M13/15(2006.01)I 主分类号 G06F9/44(2006.01)I
代理机构 济南金迪知识产权代理有限公司 37219 代理人 许德山
主权项 一种基于MFC对话框的RS码编码及识别方法,首先创建对话框资源,生成对话框类,然后为各对话框添加控件并添加控件的消息处理函数,最后写入编码及识别函数,该方法步骤如下:1)创建一个新的基于对话框的MFC工程,工程创建后,系统会创建主对话框界面;由于一个对话框对应一个类,所以系统目前只有一个类”CRSCodeDlg”,即RS码对话框类;然后为主界面添加控件及修改主界面及控件的属性,首先需要添加“编码”、“识别”和“退出”三个按钮,然后设置对话框及控件的属性,即修改对话框及按钮的Caption及ID;2)生成两个对话框类,即新建两个对话框,分别为RS码编码对话框和RS码识别对话框,对应的两个类分别为”CRSCodeEncodeDlg”即RS码编码对话框类和”CRSCodeRecognitionDlg”即RS码识别对话框类;3)为各对话框添加控件,并为各个控件添加变量,给RS码编码对话框添加静态文本框、下拉框、文本框、按钮和超链接,给RS码识别对话框添加静态文本框,文本框,按钮和超链接;然后为各个控件添加变量,在程序运行时,用户在界面上的操作包括选择下拉框的值、在文本框中输入的值和选择的文件路径会给对应的控件的变量赋值,使其在程序中得以使用;4)添加控件的消息处理函数,给“编码”和“识别”按钮添加”DoModal”函数,使其在单击后能分别打开RS码编码对话框和RS码识别对话框;给“浏览”按钮添加函数,使其在单击后使用户任意选择文件路径;5)写入编码及识别算法的接口函数,分别为”RS_EncodeInterfaceFunc(order,capacity,zero,number,codeNumber,offset,ber,RSEncodePathbin,RSEncodePathgf)”和“RS_RecogInterfaceFunc(RSCodePath,RSParaPath)”,其中order为阶数,capacity为纠错容量,zero为生成多项式的首根的幂次,number为本原多项式,codeNumber为要编码的码字个数,offset为偏移量,ber为误码率,RSEncodePathbin为码字写入文件路径,RSEncodePathgf为参数写入文件路径,RSCodePath为读出的码字文件路径,RSParaPath为识别出的参数写入文件的路径;然后新建两个cpp文件,分别写入编码及识别算法的相关函数;6)编码时,用户需要在界面上选择RS码的阶数、本原多项式、参数写入的文件路径和码字写入的文件路径,按提示输入纠错容量、生成多项式的首根的幂次、码字个数、偏移量和误码率,点击“编码”按钮后,软件会将这些变量的值赋给各个控件对应的变量,然后这些变量再作为参数传递到”RS_EncodeInterfaceFunc(order,capacity,zero,number,codeNumber,offset,ber,RSEncodePathbin,RSEncodePathgf)”函数,进而完成编码,其中编码的步骤为:a.假设待编码的消息为u=(u<sub>0</sub>,u<sub>1</sub>,…,u<sub>k‑1</sub>),其中u<sub>0</sub>,u<sub>1</sub>,…,u<sub>k‑1</sub>为0或1,k是信息位的个数,则相应的消息多项式为u(X)=u<sub>0</sub>+u<sub>1</sub>X+…+u<sub>k‑1</sub>X<sup>k‑1</sup>                      (1)其中X是多项式的变量,然后用X<sup>n‑k</sup>乘以u(X),得到次数不大于n‑1的多项式X<sup>n‑k</sup>u(X)=u<sub>0</sub>X<sup>n‑k</sup>+u<sub>1</sub>X<sup>n‑k+1</sup>+…+u<sub>k‑1</sub>X<sup>n‑1</sup>                (2)b.(n,k)RS码中,有且仅有一个次数为n‐k的码多项式,每一个码多项式均为该多项式的倍式,即由该多项式可以生成整个RS码,这个码多项式即为生成多项式g(X);用X<sup>n‑k</sup>u(X)除以生成多项式g(X)得到X<sup>n‑k</sup>u(X)=a(X)g(X)+b(X)                     (3)其中,a(X)和b(X)分别为相除以后的商式和余式,由于g(X)的次数为n‑k,则b(X)的次数必不大于n‑k‑1;则可以得到b(X)=b<sub>0</sub>+b<sub>1</sub>X+…b<sub>n‑k‑1</sub>X<sup>n‑k‑1</sup>                     (4)由式(3),我们得到如下次数不大于n‑1的多项式:‑b(X)+X<sup>n‑k</sup>u(X)=a(X)g(X)                     (5)该多项式为生成多项式的倍式,因此它也是由多项式g(X)生成的RS码的码多项式;c.将b(X)和X<sup>n‑k</sup>u(X)做和,即(2)式加上(4)式得:<maths num="0001"><math><![CDATA[<mrow><mtable><mtr><mtd><mrow><mi>b</mi><mrow><mo>(</mo><mi>X</mi><mo>)</mo></mrow><mo>+</mo><msup><mi>X</mi><mrow><mi>n</mi><mo>-</mo><mi>k</mi></mrow></msup><mi>u</mi><mrow><mo>(</mo><mi>X</mi><mo>)</mo></mrow><mo>=</mo><msub><mi>b</mi><mn>0</mn></msub><mo>+</mo><msub><mi>b</mi><mn>1</mn></msub><mi>X</mi><mo>+</mo><mo>...</mo><mo>+</mo><msub><mi>b</mi><mrow><mi>n</mi><mo>-</mo><mi>k</mi><mo>-</mo><mn>1</mn></mrow></msub><msub><mi>X</mi><mrow><mi>n</mi><mo>-</mo><mi>k</mi><mo>-</mo><mn>1</mn></mrow></msub></mrow></mtd></mtr><mtr><mtd><mrow><mo>+</mo><msub><mi>u</mi><mn>0</mn></msub><msup><mi>X</mi><mrow><mi>n</mi><mo>-</mo><mi>k</mi></mrow></msup><mo>+</mo><msub><mi>u</mi><mn>1</mn></msub><msup><mi>X</mi><mrow><mi>n</mi><mo>-</mo><mi>k</mi><mo>+</mo><mn>1</mn></mrow></msup><mo>+</mo><mo>...</mo><mo>+</mo><msub><mi>u</mi><mrow><mi>k</mi><mo>-</mo><mn>1</mn></mrow></msub><msup><mi>X</mi><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msup></mrow></mtd></mtr></mtable><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001060717410000021.GIF" wi="1493" he="151" /></maths>相应的码字为(b<sub>0</sub>,b<sub>1</sub>,…,b<sub>n‑k‑1</sub>,u<sub>0</sub>,u<sub>1</sub>,…,u<sub>k‑1</sub>)                      (7)由上述方法可得到一个系统形式的(n,k)RS码;由上可见,码字是由k位不变的信息位和其后的n‑k个校验位组成,这n‑k个校验位是X<sup>n</sup><sup>‑k</sup>乘以消息多项式u(X)后得到的X<sup>n‑k</sup>u(X)除以生成多项式g(X)所得余式的系数;在系统形式的RS码中,前n‑k个符号,即X<sup>0</sup>,X<sup>1</sup>,…,X<sup>n‑k‑1</sup>的系数为校验位,后k个符号,即X<sup>n‑k</sup>,X<sup>n‑k+1</sup>,…,X<sup>n</sup><sup>‑1</sup>的系数为信息位,将n‑k个校验位和k个信息位连接起来即可组成一个系统形式的(n,k)RS码;7)RS码识别时,用户需要在界面上选择码字读出的文件路径和识别后的参数写入文件路径;点击识别按钮后,软件会将这两个变量的值赋给两个路径文本框对应的变量,然后这两个变量会作为参数传递到“RS_RecogInterfaceFunc(RSCodePath,RSParaPath)”函数,进而完成识别;RS码的识别采用矩阵行化简算法,即将识别序列排成m×n(m>n)阶的识别矩阵,该矩阵要求每行的数据大于码长,所有行的第一个数据相隔码长的整数倍,使得识别矩阵所有行从某一列开始是码字的起点,且每行会有完整的码字,因此行化简后,从这一列开始可得到线性分组码的标准生成矩阵,提取出该生成矩阵即完成了二进制线性分组码的盲识别;RS码识别的步骤为:a.将识别数据排成矩阵;对于一般的线性分组码,在没有先验知识的情况下,很难确定识别矩阵的列数,但是RS码对应的二进制线性分组码码长只能取离散值,即m(2<sup>m</sup>‑1),m是RS码的阶数;对m进行遍历,将识别数据按行排成2m(2<sup>m</sup>‑1)×4m(2<sup>m</sup>‑1)阶的识别矩阵,如果假定的m不是编码时的码字阶数,则各行之间没有线性约束关系,化简后会得到单位矩阵,如果该m是编码时的码字阶数,则该矩阵列数为码长的两倍,每行第一个数据间隔为码长的两倍,行化简后得到的形式为<img file="FDA0001060717410000031.GIF" wi="403" he="222" />b.行化简矩阵,得到RS码二进制衍生码的生成矩阵;<img file="FDA0001060717410000032.GIF" wi="373" he="223" />中[IP<sub>2</sub>]就是待识别线性分组码的生成矩阵,提取出该矩阵,就完成了该线性分组码的识别,该矩阵所在列即为识别数据中第一个完整码字的起点,该矩阵的行数为信息位的长度,列数为码长;c.识别本原多项式,然后根据识别的本原多项式,将化简后的矩阵映射到GF(2<sup>m</sup>)上来识别生成多项式,GF(2<sup>m</sup>)表示含有2<sup>m</sup>个元素的有限域;<img file="FDA0001060717410000033.GIF" wi="381" he="222" />中子矩阵P<sub>2</sub>的形式为<img file="FDA0001060717410000034.GIF" wi="587" he="303" />其中P<sub>ij</sub>是m×m阶的矩阵,令P<sub>ij</sub>中任一行左移一位且后面补0,再与其上一行对应比特分别模2加,如果其结果不是全0,则和向量中的元素就是本原多项式的系数;[I P<sub>2</sub>]中最后一行就是RS码生成多项式的系数。
地址 250100 山东省济南市历城区山大南路27号