線性分組碼(9,4)_第1頁
線性分組碼(9,4)_第2頁
線性分組碼(9,4)_第3頁
線性分組碼(9,4)_第4頁
線性分組碼(9,4)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、*實踐教學*蘭州理工大學計算機與通信學院計算機通信課程設計題目:線性分組碼 (9 ,4) 碼的編譯碼仿真設計專業(yè)班級:姓名:學號:指導教師:成績:目錄前言1第一章線性分組碼原理21.1 差錯控制概述21.2 差錯控制原理21.3 線性分組碼概念31.4 線性分組碼的基本原理3第二章線性分組碼的編碼42.1 生成矩陣42.2 校驗矩陣6第三章線性分組碼的譯碼73.1 糾錯碼的介紹73.2 糾錯的原理73.3 線性分組碼譯碼原理7第四章推導過程94.1 編碼過程94.2 譯碼過程9第五章仿真結果分析135.1 編碼程序流程圖135.2 譯碼程序流程圖145.3 運行結果分析14設計總結16致謝17

2、參考文獻18附錄19前言計算機通信是一種以數(shù)據(jù)通信形式出現(xiàn),在計算機與計算機之間,計算機與終端設備之間進行信息傳遞的方式。它是現(xiàn)代計算機技術與通信技術相結合的產(chǎn)物,在軍隊指揮自動化系統(tǒng)、武器控制系統(tǒng)、信息處理系統(tǒng)、決策分析系統(tǒng)、情報檢索系統(tǒng)以及辦公自動化系統(tǒng)等領域得到了廣泛應用。按通信覆蓋地域的廣度,計算機通信通常分為局域網(wǎng)、城域網(wǎng)、廣域網(wǎng)三類。在通常情況下,計算機通信都是由多臺計算機通過通信線路連接成計算機通信網(wǎng)進行的,這樣可共享網(wǎng)絡資源,充分發(fā)揮計算機系統(tǒng)的效能。近年來,隨著計算機、衛(wèi)星通信及高速數(shù)據(jù)網(wǎng)的飛速發(fā)展,數(shù)據(jù)的交換、數(shù)據(jù)的交換理和存儲技術得到了廣泛的應用, 人們對數(shù)據(jù)傳輸和存儲系

3、統(tǒng)的可靠性提出了越來越高的要求。因此,如何控制差錯、提高數(shù)據(jù)傳輸和存儲的可靠性,成為現(xiàn)代數(shù)字通信系統(tǒng)設計的重要課題 。目前,絕大多數(shù)的數(shù)字計算機和數(shù)字通信系統(tǒng)中廣泛采用二進制形式的碼。而線性分組碼具有編譯碼簡單,封閉性好等特點,通常它用于前向糾錯。在分組碼中,監(jiān)督位被加到信息位之后,形成新的碼。在編碼時, k 個信息位被編為 n 位碼組長度,而 n-k 個監(jiān)督位的作用就是實現(xiàn)檢錯與糾錯。這種碼的編碼效率比較高,因此得到了廣泛的應用。本課程設計主要是采用 Matlab 仿真實現(xiàn)線性分組碼的編譯碼。 在加深理論知識的基礎上,對 Matlab 仿真也有進一步的理解。第一章線性分組碼原理1.1 差錯控

4、制概述數(shù)字信號在傳輸過程中,由于受到干擾的影響,碼元波形將變壞,接收端收到后可能發(fā)生錯誤判決,由乘性干擾引起的碼間串擾,一般采用均衡的辦法糾正。加性干擾的影響一般從合理選擇調(diào)制制度解調(diào)方法以及發(fā)送功率等方面考慮,使加性干擾不足以影響達到誤碼率要求。在仍不能滿足要求時,為減少錯誤、提高通信質量還采用檢錯、糾錯技術,即差錯控制措施。差錯控制的主要方法是將數(shù)據(jù)以某種形式編碼。差錯控制的核心為:抗干擾編碼,簡稱差錯控制編碼。差錯控制編碼分為檢錯碼、糾錯碼兩大類。它在碼元間建立了某種數(shù)學約束關系,并且對特定的信道總存在某種糾錯編碼信號以實現(xiàn)最小的能量或最小的帶寬或最小的時間代價獲得最小的數(shù)據(jù)傳輸差錯。對

5、于不同信道,采用不同類型的差錯控制技術。差錯控制技術主要有:1) 檢錯重發(fā):在發(fā)送碼元序列中加入差錯控制碼元,接收端利用這些碼元檢測到有錯碼時,利用反向信道通知發(fā)送端,要求發(fā)送端重發(fā),知道正確接收為止。2) 前向糾錯:前向糾錯是利用接收端在發(fā)送碼元序列中加入的差錯控制碼元,不但能夠發(fā)現(xiàn)錯碼,還能夠將錯碼恢復其正確值。3) 反饋校驗:不需要在發(fā)送序列中加入差錯控制碼元,接收端接收到的碼元原封不動的轉發(fā)會發(fā)送端。在發(fā)送端將他和原發(fā)送碼元逐一比較,若發(fā)現(xiàn)有不同,就認為接收端接受的序列有錯碼,發(fā)送端立即從發(fā)。4) 檢錯刪除:在接收端發(fā)現(xiàn)錯碼后,立即將其刪除,不要求重發(fā)。這種方法只適合在少數(shù)特定系統(tǒng)中,

6、在那里發(fā)送碼元有大量的多余度,刪除部分接收碼元不影響應用。1.2 差錯控制原理將信息碼分組, 并為每個信息組附加若干監(jiān)督的編碼,稱為“分組碼”。在分組碼中, 監(jiān)督碼元僅監(jiān)督本組碼中的信息碼元。分組碼一般用符號( n)、( k)表示,其中 k 是每組碼二進制信息碼元的數(shù)目。 n 是碼組的總位數(shù),又稱為碼組的長度。 r=n-k 為每個碼組中的監(jiān)督碼元數(shù)目,或稱監(jiān)督位數(shù)目。k 位二進制數(shù)構成的碼組集合為種不同的碼組,若組都為有用碼組,其中任意碼組出現(xiàn)錯誤都將變成另一碼組,則接收端無法檢測識別哪一組出錯。若只取部分碼組為有用碼組,則在傳輸過程中如接收端接收到的碼組為非許用碼組即禁用碼組時,則可知傳輸錯

7、誤。以 3 位二進制數(shù)構成的碼組為例,它共有 8 種不同的可能組合,若將其全部用來表示天氣,則可以表示 8 種不同天氣,例如: 000 晴、 001 云、 010 陰、 011 雨、 100 雪、 101 霜、110 霧、111 雹。其中任一碼組在傳輸中若發(fā)生一個或多個錯誤, 則將變成另一個信息碼組。這時接收端無法發(fā)現(xiàn)錯誤。若在上述 8 種碼組中秩序使用 4 種來傳達天氣,例如: 000 晴、 011 云、101 陰、 110 雨。這時,雖然只能傳達 4 種不同的天氣,但是接收端卻可能發(fā)現(xiàn)碼組中的一個錯碼。如 000 錯碼一位,則接受碼組將變成 100 或 010 或 011. 這三種碼組都為

8、禁用碼組,故接收端認為接收碼錯誤。要想能夠糾正錯誤,需增加冗余度。1.3 線性分組碼概念在計算機系統(tǒng)中,信息均按字節(jié)或字組成,故一般采用分組碼。對信源輸出的序列,若按每組長 k 位進行分組,則在二進制情況下共有個不同的組合,若按某一種規(guī)則,將每一組k 位增加 r 位校驗位( r=n-k ,n 是含有碼元的個數(shù))。使之成為具有一定糾錯或檢錯能力的碼字,則在個碼字集合構成分組碼。分組碼的規(guī)律性是局限在一個碼組之內(nèi)的,如果這種規(guī)律性是以一線性方程組來表示的,則這種分組碼就叫做線性分組碼。1.4 線性分組碼的基本原理分組碼是一組固定長度的碼組, 一般可用符號( n,k)表示,其中 k 是每組的信息元數(shù)

9、目,n 是碼組的總位數(shù),又稱為碼組的長度(碼長)。 r=n-k 為碼組的監(jiān)督元數(shù)目。長為 n 的所有二進制組(或稱 n 重)共有個,但長為 k 的信息組只有個,因此分組碼實際上就是以一定的規(guī)則從個 n 重中挑選出個 n 重,使個信息組與個 n 重之間建立一一對應關系,這個 n 重組成了一個( n,k )分組碼。通常稱這個 n 重為許用碼組,簡稱碼組,碼矢或碼字,而其余的 - 個 n 重為禁用碼組。在( n,k)線性分組碼中,常用編碼效率R 衡量碼的有效性,它定義為信息位在碼字中所占的比重: R=k/n 。 R 越大,表明碼的冗余度越小。第二章線性分組碼的編碼2.1 生成矩陣性分組碼( n,k)

10、中許用碼字(組)為個。定義線性分組碼的加法為模二加法,乘法為二進制乘法。即1+1=0 、 1+0=1 、 0+1=1 、0+0=0 ;11=1 、10=0 、00=0 、01=0 。且碼字與碼字的運算在各個相應比特位上符合上述二進制加法運算規(guī)則。線性分組碼具有如下性質(n,k)的性質:1、封閉性。任意兩個碼組的和還是許用的碼組。2、碼的最小距離等于非零碼的最小碼重。對于碼組長度為n、信息碼元為 k 位、監(jiān)督碼元為rnk 位的分組碼,常記作( n,k )碼,如果滿足 2r 1 n,則有可能構造出糾正一位或一位以上錯誤的線性碼。下面我們通過 ( 9,4)分組碼的例子來說明如何具體構造這種線性碼。

11、設分組碼( n,k)中, k = 4,為能糾正一位誤碼,要求 r5?,F(xiàn)取 r 5,則 nkr9。該例子中,信息組為(),碼字為 (). 當已知信息組時,按以下規(guī)則得到五個校驗元,即( 2.1)(9,4)線性分組碼有 24 個許用碼字或合法碼字,另有 29 - 24 個禁用碼字。發(fā)送方發(fā)送的是許用碼字,若接收方收到的是禁用碼字,則說明傳輸中發(fā)生了錯誤。為了深化對線性分組碼的理論分析,可將其與線性空間聯(lián)系起來。由于每個碼字都是一個二進制的 n 重,及二進制 n 維線性空間 Vn 中的一個矢量,因此碼字又稱為碼矢。線性分組碼的一個重要參數(shù)是碼率 r=k/n, 它說明在一個碼字中信息位所占的比重, r

12、 越大,說明信息位所占比重越大,碼的傳輸信息的有效性越高。由于 (n,k) 線性分組,線性分組碼的 2 個碼字組成了 n 維線性空間 Vn 的一個 K 維子空間。因此這個碼字完全可由k 個線性無關的矢量所組成。設此 k 個矢量為 , ,有生成矩陣形式為( 2.2 )(n,k) 碼字中的任一碼字 ,均可由這組基底的線性組合生成,即Ci = Cn Cn 1Cn 2 Cn k G(2.3 )式中, CnCn 1Cn 2Cn k 是 k 個信息元組成的信息組。寫出線性分組碼( 9,4 )碼的所有信息組,由式(2.1)可得到生成的所有碼字,如下表2-1 所示:信息組碼字信息組碼字000000000000

13、0100010001110000010001011111001100110011001000101011010101010010100011001111001101110110010101000100110111100110000111010101011010011011101010000110011001101111011101000101110111000101111111111110表 2-1 線性分組碼( 9, 4)碼對 于表 2-1 給出的線性分組碼( 9,4)碼,可將寫成矩陣形式=(2.4 )故( 9, 4)碼的生成矩陣為可以看到,從( 9,4)碼的( 010011011 ),(

14、001010110(2.5 )16 個碼字中,挑選出 k=4 個線性無關的碼字( 100011100 ),( 000101111 )作為碼的一組基底,用C=mG 計算得碼字。一個系統(tǒng)碼的生成矩陣 G= PG ,其左邊k 行k 列應是一個k 階單位方陣,因此生成矩陣G 表示為(2.6 )式中, P 是一個 k(n-k) 階矩陣。2.2 校驗矩陣表 2-1 所示的(9,4)線性分組碼的四個校驗元由式 (2.1 )所示的線性方程組決定的。把式( 2.1 )移相,(2.7 )上式的矩陣形式為=0(2.8 )這里的五行九列矩陣稱為(9, 4)碼的一致校驗矩陣,用H 表示,即(2.9 )由 H 矩陣得到

15、(n,k) 線性分組碼的每一碼字 ,(i=1,2), 都必須滿足由 H 矩陣各行所確定的線性方程組,即=0。( 9, 4)碼的生成矩陣 G 中每一行及其線性組合都是( n,k )碼的碼字,所以有 G =0。由 G 和 H 構成的行生成的空間互為零空間,即 G 和 H 彼此正交。 H= 其右邊 r 行 r 列組成一個單位方陣。第三章線性分組碼的譯碼3.1 糾錯碼的介紹糾錯碼 (error correcting code) ,在傳輸過程中發(fā)生錯誤后能在收端自行發(fā)現(xiàn)或糾正的碼。僅用來發(fā)現(xiàn)錯誤的碼一般常稱為檢錯碼。關系的建立稱為編碼。碼字到達收端后,可以根據(jù)編碼規(guī)則是否滿足以判定有無錯誤。當不能滿足時

16、,按一定規(guī)則確定錯誤所在位置并予以糾正。糾錯并恢復原碼字的過程稱為譯碼。檢錯碼與其他手段結合使用,可以糾錯。糾錯編碼又稱信道編碼,信源編碼是信息傳輸?shù)膬蓚€方面。它們之存在對偶的關系。準確地說,即把原碼字按某種規(guī)則變成有一定剩余度的碼字,并使每個碼字的碼元間有一定的關系。碼元間的關系為線性時,稱為線性碼;否則稱為非線性碼。檢錯碼與其他手段結合使用,可以糾錯。3.2 糾錯的原理糾錯碼能夠檢錯或糾錯,主要是靠碼字之間有較大的差別。這可用碼字之間的漢明距離 d(x ,y)來衡量。它的定義為碼字 x 與 y 之間的對應位取不同值的碼元個數(shù)。一種糾錯碼的最小距離 d 定義為該種碼中任兩個碼字之間的距離的最

17、小值。 一種碼要能發(fā)現(xiàn) e 個錯誤 ,它的最小距離 d 應不小于 e+1 。若要能糾正 t 個錯誤,則 d 應不小于 2t+1。在構造線性碼時,數(shù)字上是從 n 維空間中選一 k 維子空間,且使此子空間內(nèi)各非零碼字的重量盡可能大。若一種碼的碼長為 n ,碼字數(shù)為 M, 或信息位為 h, 以及最小距離為 d,則可把此碼記作分組碼。若此碼為線性碼,常簡記作(n,k)碼。常用 R=M/n 表示碼的信息率 ,單位為比特 /碼元。 R 越大 ,則每個碼元所攜帶的信息量越大,編碼效率越高。糾錯碼實現(xiàn)中最復雜的部分是譯碼。它是糾錯碼能否應用的關鍵。采用的碼長n 越大 ,則誤碼率越小。 但 n 越大,編譯碼設備

18、也越復雜 , 且延遲也越大。 人們希望找到的譯碼方法是 : 誤碼率隨碼長 n 的增加按指數(shù)規(guī)律下降 ;譯碼的復雜程度隨碼長 n 的增加接近線性地增加; 譯碼的計算量則與碼長 n 基本無關。3.3 線性分組碼譯碼原理兩個碼字之間,對應位取之不同的個數(shù),稱為漢明距離,用d 表示。一個碼的最小距離定義為 =mind(,),i j, ,(n,k), 兩個碼字之間的距離表示了它們之間差別的大小。距離越大,兩個碼字的差別越大,則傳送時從一個碼字錯成另一碼字的可能性越小。碼的最小距離愈大,其抗干擾能力愈強。對于任一個( n,k)線性分組碼,若要在碼字內(nèi)檢測出 e 個錯誤,則要求碼的最小距離 d e+1; 糾

19、正 t 個錯誤,則要求碼的最小距離 d2t+1;(3) 糾正 t 個錯誤同時檢測 e( t)個錯誤,則要求 dt+e+1 。假設接收端收到的碼字為 B,那么它和原來發(fā)送端發(fā)送的碼字 A 之間就有可能存在著誤差。即在碼組 A= 中的任意一位就有可能出錯。 這樣我們在接收端接收到一個碼組時就有可能判斷錯發(fā)送端原來應該要表達的意思。為了描述數(shù)據(jù)在傳輸信道中出現(xiàn)錯誤的情況,引入了錯誤圖樣 E,在錯誤圖樣中, 0 代表對應位沒有傳錯, 1 代表傳輸錯誤。實際上錯誤圖樣E就是收序列與發(fā)送序列的差。所以在譯碼中用接收到的碼字B 模二加錯誤圖樣 E 就可以得到發(fā)送端的正確碼字A 。因此譯碼的過程就是要找到錯誤

20、圖樣E。因為 A 是編得的正確碼字。根據(jù)前面所敘述,它和監(jiān)督矩陣的轉置相乘為0。顯然, S僅與錯誤圖樣有關,它們之間是一一對應的關系。找到了校正子S ,也就可以找到E。而與發(fā)送的碼字無關。若E=0,則 S=0;因此根據(jù) S 是否為 0 可進行碼字的檢錯。如果接收碼字 B 中只有一位碼元發(fā)生錯誤,又設錯誤在第i 位。即 =1,其他的均為 0。在后面的譯碼程序中,建立了一個校正子S 與錯誤圖樣E 對應的表。也就是收到一個B 序列,就可以通過計算得到一個校正子,而每一個校正子都對應著一個錯誤圖樣E,再通過B 模二加上 E ,就可以得到正確的碼字A。因為在不同的錯誤序列 B 中,同一位碼元錯誤時對應的

21、 E 是一樣的,所以可以利用 000000000 這個正確的碼字讓它每位依次錯誤, 來求得它的校正子。 而這時的矩陣 B 就是錯誤圖樣 E 。在編程時本實驗所采用的為( 9,4 )線性分組碼,最小漢明距離為 2,所以具有糾錯 1 位檢錯兩位的功能。第四章推導過程4.1 編碼過程監(jiān)督矩陣 H 與生成矩陣 G 的關系:由 H 與 G 的分塊表示的矩陣形式H =P(4.1 )G= Q(4.2 )P=( 4.3 )則有G=0(4.4 )或H=0(4.5 )已知給出的( 9,4)碼的 Q 矩陣(4.6 )則可以根據(jù) G= Q求出生成矩陣(4.7 )由 P=和 H =P 即可求出監(jiān)督矩陣 HH =(4.8

22、 )有了生成矩陣后則可以根據(jù)輸入的四位信息位和生成矩陣相乘得到編碼矩陣,即C=mG( 4.9)4.2 譯碼過程對于譯碼過程,同樣由上知道監(jiān)督矩陣HH =(4.10 )H 矩陣與 (n,k) 碼的任意一個許用碼字相乘的結果必然為零, 即若 C=mG 是任一 (n,k) 碼字,則必有 C =0。若不屬于許用碼字,或有傳輸差錯,且差錯位數(shù)在 (n,k) 碼糾錯能力內(nèi),則運算結果將為非 0 值,此時,可以糾錯或檢錯重發(fā)。當編碼矩陣與生成矩陣的轉置相乘時,若當其中的一位編碼或兩位出現(xiàn)差錯時會有十種情況:= B = 000000000 =00000( 4.11 )= B =000000001 ( 4.12

23、 )= B =000000010( 4.13 )= B =000000100(4.14 ). . . . . .= B =010000000(4.15 )=100000000(4.16 )B = B =010000100 =11111( 4.17 )由以上各式,可得出譯碼時所有可能出現(xiàn)的校正子及錯誤圖樣,如下表( 4-1 )所示:校正子 S錯誤圖樣 E000000000000000000100000000100010000000010001000000001000101000000100010000000010000011110001000001011000100000011011010000

24、0001110010000000011111010000100表 4-1 (9, 4 )線性分組碼的譯碼表而這些情況正好是和校驗子有某種對應關系的,根據(jù)這些對應關系可以進行相關編程。若編程檢測到了哪一位錯誤,可以根據(jù)A=B +E( 4.18 )其中 A 為糾錯輸出碼序列, E 為錯碼矩陣。對接收到的信息進行改正求出正確的編碼,從而再提去更正后的接收序列的前三位來提取信息位,以至獲得信息矩陣 I。第五章仿真結果分析5.1 編碼程序流程圖在前面章節(jié),我們得到矩陣 Q ,Q 為一個四行五列矩陣。由 Q 得到生成矩陣 G,在得到監(jiān)督矩陣 H ,從而得到所有可用的碼組,即完成編碼。( 9,4 )線性分組

25、碼的編碼流程圖如下圖 5-1 所示:開始根據(jù)矩陣 Q,得到生成矩陣G根據(jù)生成矩陣 G,得到監(jiān)督矩陣 H計算所有的可用碼組完成圖 5-1 編碼程序流程圖5.2 譯碼程序流程圖同樣,我們根據(jù)上述章節(jié)得到監(jiān)督矩陣H,則將碼字與監(jiān)督矩陣的轉秩相乘,得到伴隨式S,檢驗出錯誤碼的位置,并得到正確的碼字及信息位,即(9,4 )線性分組碼的譯碼完成。譯碼流程圖如下圖5-2 所示:開始得到監(jiān)督矩陣 H將碼字與監(jiān)督矩陣的轉秩相乘得到伴隨式并糾錯結束圖 5-2 譯碼流程圖5.3 運行結果分析運行程序,因為矩陣Q 在程序中已給出,則得出生成矩陣G 和監(jiān)督矩陣 H,輸入一組信息序列 m ,得到生成碼字 C。此過程完成程

26、序的編碼。 同樣,根據(jù)監(jiān)督矩陣 H,輸入碼字 C,則C與H的轉秩相乘得到伴隨式,并由程序得出出錯位置及正確碼字和信息位,從而完成S校驗過程,得到譯碼。運行結果如下圖5-3 、 5-4 所示。圖 5-3程序編碼過程圖 5-4程序校驗過程致謝經(jīng)過兩個星期的課程設計,使我們加強了動手、思考和解決問題的能力。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。這次課程設計也讓我體會到同學及老師間交流的重要性。只有彼此間認真交流、協(xié)作,才能讓每個人的思維更加

27、開闊,使每個人的設計更加完善。三人行,必有我?guī)熝?。交流也能讓我們學到其他方面的東西,也能增加同學間以及師生間的距離。在我們師生認真努力下,此次課程設計終于順利完成了,在設計中遇到了很多專業(yè)知識問題,最后在同學的交流以及老師的辛勤指導下,終于迎刃而解,同時也學到很多實用的知識,學到了很多課內(nèi)學不到的東西,比如獨立思考解決問題,出現(xiàn)差錯的隨機應變等都受益匪淺。在此,感謝老師的細心指導!參考文獻1 樊昌新,曹麗娜通信原理國防工業(yè)出版社, 20112 孫麗華編 . 信息論與糾錯編碼 . 電子工業(yè)出版社 . 2005 ,33 郭文彬 桑林編 . 通信原理 -基于 MATLAB 的計算機仿真 . 北京郵電

28、大學出版社 .2006.24 王華 李有軍編 . MATLAB 電子仿真與應用教程 (第二版 ). 國防工業(yè)出版社 . 2007.35 孫屹主編 . MATLAB 通信仿真開發(fā)手冊 . 國防工業(yè)出版社 . 2005.16 吳玲達,李國輝,楊冰 等著 . 計算機通信原理與技術 M. 國防科技大學出版社, 2003 ,3.7 潘新民 著. 計算機通信技術 M. 電子工業(yè)出版社, 2003 , 7.8 孫麗華 著. 信息論與糾錯編碼 M. 電子工業(yè)出版社, 2005 ,39 Proakis 著,張力軍 譯. 數(shù)字通信(第四版) M. 電子工業(yè)出版社, 2004 , 7.附錄% -初始化 k,r ,滿

29、足分配條件-flag_in=1;% 輸入條件標記,若滿足條件則跳出循環(huán),否則就一直輸入while(flag_in)k=input( 線性分組碼信息碼長度k=);r=input( 線性分組碼監(jiān)督位長度r=);if(2r-1=k+r)(默認不滿足)flag_in=0;elsedisp( 賦值錯誤!須滿足2k-1=k+r);endend% -% - 生成校正子,可選擇自動生成或手動輸入-Q_yesOrNo=input( 是否自動生成校正子? Y/N:,s); if(Q_yesOrNo=Y)% 從數(shù)值不會重合的集合中選出校驗子的十進制數(shù)Q_randFull=randperm(2r-1);Q_randC

30、heck=zeros(1,k);% 初始化 k 行 r 列的矩陣 Q Q=zeros(k,r);i=1;j=1;% 選出可用的校驗子(十進制)while(i=k)flag_cir=1;% 循環(huán)標記,表示隨機矩陣中是否有不符合規(guī)則的數(shù),1,2,4,8,.for n=0:1:k-1%判斷是否有特殊數(shù)字if(Q_randFull(j)=2n)flag_cir=0;% 有特殊數(shù)字則將標記置為0endendif(flag_cir=1)% 一般情況下(默認 flag_cir=1 ),會將正常的數(shù)組賦予 Q_randCheck Q_randCheck(i)=Q_randFull(j);j=j+1;i=i+1

31、;else% 否則,就使被挑選的數(shù)下標加1,即此數(shù)不符合要求,試添加下一個數(shù)j=j+1;endendQ_charA=dec2bin(Q_randCheck);% 將十進數(shù)格式轉換為二進制表示方式 for i=1:1:kfor j=1:1:r% 將字符轉換為數(shù)值后寫入矩陣Q(i,j)=str2double(Q_charA(i,j);endendelse% 初始化k 行r 列的矩陣Q=zeros(k,r);% 根據(jù)校正子生成Q,為k 行r 列for i=1:1:k% 要求為輸入字符,否則默認輸入的為數(shù)值Q_charA(i,:)=input(sprintf(輸入一個校正子,以檢測for j=1:1:

32、rC%d位的錯碼(%d位 ),k+r-i,r),s);% 將字符轉換為數(shù)值后寫入矩陣Q(i,j)=str2double(Q_charA(i,j);endendend% -% -生成完全的校正子與錯碼位置之間的對應關系-% 生成單位矩陣(字符型) ,以補齊校正子for i=r-1:-1:0Qr(r-i)=2i;endQ_charB=dec2bin(Qr);%將十進數(shù)格式轉換為二進制表示方式% 生成校正子與錯碼位置的對應關系disp( 校正子與錯碼位置的對應關系);Q_char=Q_charC Q_charD% -% - 線性分組碼內(nèi)部的函數(shù)關系及計算-Ik=eye(k);% 生成 k*k 的單位

33、矩陣,與Q 合成為生成矩陣GG=Ik Q;% 生成矩陣P=Q;Ir=eye(r);% 生成 r*r 的單位矩陣,與P 合成為監(jiān)督矩陣HH=P Ir;% 監(jiān)督矩陣% -% - 計算所有的可用碼組 -valid_yesOrNo=input( 是否要顯示所有可用碼組 ?Y/N:,s); if(valid_yesOrNo=Y)% 初始化 2k 行 k+r 列,與 1 行 k 列的矩陣valid_codes=zeros(2k,k+r);valid_buffer=zeros(1,k);% 初始化每行碼重數(shù)組weight_array=zeros(1,2k);% 遍歷可用信息碼并輸出所有可用碼組for i=1

34、:1:2k% 將第 i 行的十進制數(shù)轉制為 valid_binary=dec2bin(i-1,k); for j=1:1:k4 位二進制數(shù)(字符矩陣)% 將字符轉換為數(shù)值放入矩陣(行向量)中valid_buffer(j)=str2double(valid_binary(j);end% 將得出的第 i 行的行向量 valid_codes, 并得出當前信息碼對應全長碼字valid_codes(i,:)=mod(valid_buffer*G,2);% 求每行可用碼字的碼重weight_array(i)=length(nonzeros(valid_codes(i,:);enddisp( 最終可用碼組:);valid_codesdisp( 最小碼

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論