[發明專利]基于MFC對話框的RS碼編碼及識別方法有效
| 申請號: | 201310341578.9 | 申請日: | 2013-08-07 |
| 公開(公告)號: | CN103399749A | 公開(公告)日: | 2013-11-20 |
| 發明(設計)人: | 馬丕明;王建躍;楊勇 | 申請(專利權)人: | 山東大學 |
| 主分類號: | G06F9/44 | 分類號: | G06F9/44;H03M13/15 |
| 代理公司: | 濟南金迪知識產權代理有限公司 37219 | 代理人: | 許德山 |
| 地址: | 250100 山*** | 國省代碼: | 山東;37 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 mfc 對話框 rs 編碼 識別 方法 | ||
1.一種基于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=(u0,u1,…,uk-1),其中u0,u1,…,uk-1為0或1,k是信息位的個數,則相應的消息多項式為
u(X)=u0+u1X+…+uk-1Xk-1????(1)
其中X是多項式的變量,然后用Xn-k乘以u(X),得到次數不大于n-1的多項式
Xn-ku(X)=u0Xn-k+u1Xn-k+1+…+uk-1Xn-1????(2)
b.(n,k)RS碼中,有且僅有一個次數為n‐k的碼多項式,每一個碼多項式均為該多項式的倍式,即由該多項式可以生成整個RS碼,這個碼多項式即為生成多項式g(X);
用Xn-ku(X)除以生成多項式g(X)得到
Xn-ku(X)=a(X)g(X)+b(X)????(3)
其中,a(X)和b(X)分別為相除以后的商式和余式,由于g(X)的次數為n-k,則b(X)的次數必不大于n-k-1;則可以得到
b(X)=b0+b1X+…bn-k-1Xn-k-1????(4)
由式(3),我們得到如下次數不大于n-1的多項式:
b(X)+Xn-ku(X)=a(X)g(X)????(5)
該多項式為生成多項式的倍式,因此它也是由多項式g(X)生成的RS碼的碼多項式;
c.將b(X)和Xn-ku(X)做和,即(2)式加上(4)式得:
b(X)+Xn-ku(X)=b0+b1X+…+bn-k-1Xn-k-1
+u0Xn-k+u1Xn-k+1+…+uk-1Xn-1????(6)
相應的碼字為
(b0,b1,…,bn-k-1,u0,u1,…,uk-1)????(7)
由上述方法可得到一個系統形式的(n,k)RS碼;
由上可見,碼字是由k位不變的信息位和其后的n-k個校驗位組成,這n-k個校驗位是Xn-k乘以消息多項式u(X)后得到的Xn-ku(X)除以生成多項式g(X)所得余式的系數;在系統形式的RS碼中,前n-k個符號,即X0,X1,…,Xn-k-1的系數為校驗位,后k個符號,即Xn-k,Xn-k+1,…,Xn-1的系數為信息位,將n-k個校驗位和k個信息位連接起來即可組成一個系統形式的(n,k)RS碼;
7)RS碼識別時,用戶需要在界面上選擇碼字讀出的文件路徑和識別后的參數寫入文件路徑;點擊識別按鈕后,軟件會將這兩個變量的值賦給兩個路徑文本框對應的變量,然后這兩個變量會作為參數傳遞到″RS_RecogInterfaceFunc(RSCodePath,?RSParaPath)″函數,進而完成識別;
RS碼的識別采用矩陣行化簡算法,即將識別序列排成m×n(m>n)階的識別矩陣,該矩陣要求每行的數據大于碼長,所有行的第一個數據相隔碼長的整數倍,使得識別矩陣所有行從某一列開始是碼字的起點,且每行會有完整的碼字,因此行化簡后,從這一列開始可得到線性分組碼的標準生成矩陣,提取出該生成矩陣即完成了二進制線性分組碼的盲識別;
RS碼識別的步驟為:
a.將識別數據排成矩陣;對于一般的線性分組碼,在沒有先驗知識的情況下,很難確定識別矩陣的列數,但是RS碼對應的二進制線性分組碼碼長只能取離散值,即m(2m-1),m是RS碼的階數;對m進行遍歷,將識別數據按行排成2m(2m-1)×4m(2m-1)階的識別矩陣,如果假定的m不是編碼時的碼字階數,則各行之間沒有線性約束關系,化簡后會得到單位矩陣,如果該m是編碼時的碼字階數,則該矩陣列數為碼長的兩倍,每行第一個數據間隔為碼長的兩倍,行化簡后得到的形式為
b.行化簡矩陣,得到RS碼二進制衍生碼的生成矩陣;
c.識別本原多項式,然后根據識別的本原多項式,將化簡后的矩陣映射到GF(2m)上來識別生成多項式;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于山東大學,未經山東大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310341578.9/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種新型磁控式并聯電抗器的仿真建模方法
- 下一篇:一種夾鉗





