2022年matlab漢明碼和循環(huán)碼的編程設(shè)計(jì)_第1頁
2022年matlab漢明碼和循環(huán)碼的編程設(shè)計(jì)_第2頁
2022年matlab漢明碼和循環(huán)碼的編程設(shè)計(jì)_第3頁
2022年matlab漢明碼和循環(huán)碼的編程設(shè)計(jì)_第4頁
2022年matlab漢明碼和循環(huán)碼的編程設(shè)計(jì)_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、二、創(chuàng)新試驗(yàn)設(shè)計(jì) 創(chuàng)新試驗(yàn)一:(7,4 )漢明碼的編碼與譯碼實(shí)現(xiàn) 1、試驗(yàn)?zāi)康?實(shí)現(xiàn)(7,4)漢明碼的編碼與譯碼,通過 這次試驗(yàn)不 但加深了對(duì)漢明碼編碼 和譯碼原理明白,而且對(duì)線性分組碼有所明白;2、試驗(yàn)原理 線性分組碼的構(gòu)造方法比較簡(jiǎn)潔、理論較為成熟,應(yīng)用比較廣泛;漢明碼是一種能夠訂正一個(gè)錯(cuò)碼的效率比較高的線性分組碼,下面以(明碼的編碼與譯碼分別進(jìn)行介紹:7,4)碼為例就漢(1)編碼原理一般來說,如漢明碼長(zhǎng)為n,信息位數(shù)為 k,就監(jiān)督位數(shù) r=n-k ;如期望用 r個(gè)監(jiān)督位構(gòu)造出 r 個(gè)監(jiān)督關(guān)系式來指示一位錯(cuò)碼的 n 種可能位置,就要求2 r1 n 或 2 r1 k r 1 1設(shè)漢明碼( n

2、,k )中 k=4,為了訂正一位錯(cuò)碼,由式(1)可知,要求監(jiān)督位數(shù) r 3;如取 r=3, 就 n=k+r=7;這樣就構(gòu)成了( 7,4 )碼;用 a a a a a a a 來表示這 7 個(gè)碼元,用 s s s 的值表示 3 個(gè)監(jiān)督關(guān)系式中的校正子,就 s s s 的值與錯(cuò)誤碼元位置的對(duì)應(yīng)關(guān)系可以規(guī)定如表 1 所列;表 2.1 校正子和錯(cuò)碼位置的關(guān)系s s s 1 2 3錯(cuò)碼位置a 5s s s 32錯(cuò)碼位置001 a 0101a4010a 1110 a5100a 2111a60113a000無錯(cuò)碼就由表 1 可得監(jiān)督關(guān)系式:a4a2s 1a 6s 2a 6a 5a 3a3s 3a6a 4a

3、3a 04在發(fā)送端編碼時(shí), 信息位a a a a 的值準(zhǔn)備于輸入信號(hào), 因此它們是隨機(jī)的;監(jiān)督位a 、a 、a 應(yīng)依據(jù)信息位的取值按監(jiān)督關(guān)系來確定,為使所編的碼中無錯(cuò)碼,就S S 2,S 等于 0,即a 5a4a205a 6a 6a 5a3a 100a 6a4a 3a0方程組( 5)可等效成如下矩陣形式1 110100a60(6)a5a41 101010a301011001a20a 1式6可簡(jiǎn)化為由于生成矩陣a0HAT0 T,H 為監(jiān)督矩陣,就由式 6可得到監(jiān)督矩陣1 1 10100H1 101010 =P I r71011001G=I Q=IkP,所以由 7得生成矩陣 G 如下:100011

4、1GI QI P010011000101010001011然后利用信息位和生成矩陣G 相乘產(chǎn)生整個(gè)碼組,即有A = a a a a a a a 0 a a a a G 8其中 A 為整個(gè)碼組矩陣,a a a a 是信息位;依據(jù)上述原理可以得到 7,4漢明碼的整個(gè)碼組;(2)譯碼與檢錯(cuò)、糾錯(cuò)原理當(dāng)數(shù)字信號(hào)編碼成漢明碼后,由于信道噪聲的存在,使得經(jīng)過信道后的漢明碼會(huì)發(fā)生差錯(cuò), 使得接收端接收到錯(cuò)碼, 因此需要多錯(cuò)碼進(jìn)行訂正, 以提高通信系統(tǒng)的抗干擾才能及牢靠性;下面分析糾錯(cuò)譯碼原理;設(shè) B 為接收碼組,它是一行7 列的矩陣,即B=b b b b b b b 7,B 中可能含有錯(cuò)碼,錯(cuò)誤圖樣 E A

5、 B = e e e e e e e 2 1 ,在 E 的表達(dá)式中,有0 當(dāng) b i a i 時(shí)e i 0,1,2 ,71 當(dāng) b i a i 時(shí)如 ie 0,表示該碼元沒錯(cuò);如 ie 1,表示該碼元為錯(cuò)碼;由 E A B 得A B E 99表示接收碼組和錯(cuò)誤圖樣之和等于正確碼組U,通過( 9)式就可以實(shí)現(xiàn)糾錯(cuò);可以用標(biāo)準(zhǔn)陣來表示全部可能的2n 個(gè) n 元碼組的接收矢量, n,k碼的標(biāo)準(zhǔn)陣形式如下:A 1 A 2 A 3 A 4 A 5E 2 A 2 E 2 A 3 E 2 A 4 E 2 A 5 E 2E 3 A 2 E 3 A 3 E 3 A 4 E 3 A 5 E 3E j A 2 E

6、j A 3 E j A 4 E j A 5 E jE 2 n k A 2 E 2 n k A 3 E 2 n k A 4 E 2 n k A 5 E 2 n k應(yīng)當(dāng)留意到,碼組 A (全 0 碼字)起兩個(gè)作用:既是其中一個(gè)正確碼組,也是錯(cuò)誤圖樣 E ,代表 A 所在行沒有錯(cuò)誤;標(biāo)準(zhǔn)陣中的 A E 2 , E 3 E 2 n k 是陪集首,陪集首的選擇是有規(guī)定的, 第 j 行的陪集首是在前j-1 行中沒有顯現(xiàn)的最小碼組,即錯(cuò)誤圖樣 E,假如不選錯(cuò)誤圖樣作為陪集首,譯碼將會(huì)產(chǎn)生錯(cuò)誤;對(duì)于7,4漢明碼,其最小碼重是 3,設(shè)碼的糾錯(cuò)才能為 t,依據(jù)公式tdmin12得該碼的糾錯(cuò)才能為1,即能糾錯(cuò)一位錯(cuò)

7、碼;由于依據(jù)完備碼的定義有n 2kjt0n12j將7,4碼代入 12可以得知, 7,4漢明碼為完備碼組,只能糾錯(cuò)和檢錯(cuò)一位 錯(cuò)碼;對(duì)于正確碼組 A 而言,有當(dāng)接收到錯(cuò)碼變成碼組AHT010EHTEHT11B 時(shí),有SBHTAE HTAHT其中 S 為校正子所構(gòu)成的校正矩陣,由于S 和 E 如(11)所示的一一對(duì)應(yīng)的關(guān)系,對(duì)于 7,4碼,錯(cuò)誤圖樣與相伴式的對(duì)應(yīng)關(guān)系如下 表 2.2 相伴式查詢表錯(cuò)誤圖樣 相伴式0000000 000 00000001 001 0000010 010 0000100 100 0001000 011 0010000 101 0100000 110 1000000 11

8、1 通過相伴式查詢表,可以由相伴式得到錯(cuò)誤圖樣,從而實(shí)現(xiàn)檢錯(cuò),進(jìn)而實(shí)現(xiàn)糾錯(cuò);3、試驗(yàn)內(nèi)容 由于編碼涉及到矩陣的運(yùn)算, 而 matlab 在處理矩陣運(yùn)算方面有特別優(yōu)勢(shì),所以這次選擇用 matlab 工具來實(shí)現(xiàn)( 7,4)漢明碼的編碼和譯碼;7,4碼的編碼比較簡(jiǎn)潔,已知監(jiān)督矩陣 H,可以通過函數(shù)求生成矩陣 G,然后信息位和生成矩陣 G 相乘就可得到全部的碼組, 7,4漢明碼的編碼程序如下:%( 7,4 )漢明碼編碼2022.11.10 clear all ; clc;H=1 1 1 0 1 0 0 ; 1 1 0 1 0 1 0; 1 0 1 1 0 0 1;%7,4%7,4碼的監(jiān)督矩陣G=gen

9、2parH碼的生成矩陣m=0 0 0 0;0 0 0 1;0 0 1 0;0 0 1 1;0 1 0 0; 0 1 0 1;0 1 1 0;0 1 1 1;1 0 0 0;1 0 0 1; 1 0 1 0;1 0 1 1;1 1 0 0;1 1 0 1;1 1 1 0;1 1 1 1; U=remm*G,2;disp7,4漢明碼的編碼結(jié)果: ;dispU; %全部的信息位由原理分析可知,要實(shí)現(xiàn)糾錯(cuò)和檢錯(cuò)譯碼,關(guān)鍵在于相伴式查詢表,因此如何實(shí)現(xiàn)相伴式查詢表是編程的關(guān)鍵,7,4漢明碼的譯碼程序如下:%下面是 7,4碼譯碼A=input 請(qǐng)輸入接收碼組: ;r,l=sizeA;E=0 0 0 0 0

10、 0 0;0 0 0 0 0 0 1;0 0 0 0 0 1 0;0 0 0 0 1 0 0;0 0 0 1 0 0 0;0 0 1 0 0 0 0;0 1 0 0 0 0 0;1 0 0 0 0 0 0;% 求校正子,然后將其轉(zhuǎn)化成十進(jìn)制數(shù) for i=1:r Sx=Si,1*4+Si,2*2+Si,3;end% 下面是( 7,4 )碼檢錯(cuò) for i=1:r switch Sxcase 0 disp 此接收碼字沒錯(cuò) case 1 disp 留意:此接收碼字的第一位有錯(cuò),請(qǐng)訂正 case 2 disp 留意:此接收碼字的其次位有錯(cuò),請(qǐng)訂正 case 4 disp 留意:此接收碼字的第三位有錯(cuò)

11、,請(qǐng)訂正 case 3 disp 留意:此接收碼字的第四位有錯(cuò),請(qǐng)訂正 case 5 disp 留意:此接收碼字的第五位有錯(cuò),請(qǐng)訂正 case 6 disp 留意:此接收碼字的第六位有錯(cuò),請(qǐng)訂正 case 7 disp 留意:此接收碼字的第七位有錯(cuò),請(qǐng)訂正 end end%下面為在知道哪位出錯(cuò)的情形下,進(jìn)行訂正for i=1:rSxswitchcase 0 Bi,:=Ai,:+E1,:; case 1 Bi,:=Ai,:+E2,:; case 2 Bi,:=Ai,:+E3,:; case 4 Bi,:=Ai,:+E4,:; case 3 Bi,:=Ai,:+E5,:; case 5 Bi,:=

12、Ai,:+E6,:; case 6 Bi,:=Ai,:+E7,:; case 7 Bi,:=Ai,:+E8,:; end end B=remB,2;disp 糾錯(cuò)后的碼字 ; dispB; 由于可能在糾錯(cuò)過程中會(huì)產(chǎn)生錯(cuò)誤,在此,我們?cè)O(shè)計(jì)了檢錯(cuò)糾錯(cuò)是否產(chǎn)生錯(cuò) 誤的程序,程序如下:% 下面為檢查糾錯(cuò)是否產(chǎn)生錯(cuò)誤 k=1; for k=1:16 if Uk,:=B flag=1; break end end if flag=1 disp 糾錯(cuò)無誤 ; else disp 留意:糾錯(cuò)有誤,請(qǐng)檢查 End 由于譯碼的目的就是找出信息位息位,提取信息位的程序如下:%下面為提取碼的信息位 for j=1:4

13、 c:,j=B:,j;enddisp 信息位 c 如下: dispc 4、試驗(yàn)結(jié)果分析 運(yùn)行編碼程序后,得到如下結(jié)果c ,所以,需要從糾錯(cuò)后的碼組中提取出信通過理論運(yùn)算,可以得出試驗(yàn)結(jié)果和理論編碼結(jié)果吻合,可以發(fā)覺,(7,4)碼的最小碼重是 3;當(dāng)接收碼組為 1 1 0 1 1 0 0時(shí),譯碼結(jié)果如下運(yùn)行程序后,可以看到:當(dāng)接收碼組為1 1 0 1 1 0 0 時(shí),會(huì)顯現(xiàn)“ 留意:此接收碼字的第六位有錯(cuò),請(qǐng)訂正” 的提示,在程序中,為防止糾錯(cuò)錯(cuò)誤,我設(shè)置 了糾錯(cuò)后的碼和編碼結(jié)果的比較, 假如糾錯(cuò)后的碼和編碼結(jié)果當(dāng)中的某個(gè)碼組相同,說明糾錯(cuò)無誤,否就糾錯(cuò)有誤;當(dāng)接收碼組為1 1 0 1 1 0

14、0時(shí),經(jīng)過糾錯(cuò)后顯現(xiàn)糾錯(cuò)無誤的結(jié)果, 說明糾錯(cuò)后的碼是正確碼組; 然后提取糾錯(cuò)后的碼組的信 息位 c,從運(yùn)行結(jié)果可以看出, c=1001;當(dāng)接收碼組為 0 1 0 1 1 0 1時(shí),運(yùn)行結(jié)果如下:此接收碼組原先就是一個(gè)正確碼組,所以通過運(yùn)行程序后,會(huì)顯現(xiàn)“ 此接收碼字沒錯(cuò)” 的提示,糾錯(cuò)后的碼字和接收的碼組是相同的,檢查到糾錯(cuò)無誤,然 后提取信息位 c,信息位 c=0101,整個(gè)譯碼完成;5、改進(jìn)建議 7,4漢明碼的編碼與譯碼相對(duì)比較簡(jiǎn)潔,可以通過 matlab 編程實(shí)現(xiàn)對(duì)信 道編碼性能的分析,可以編程實(shí)現(xiàn)比較編碼后的誤碼率和沒編碼的誤碼率,也可以編程實(shí)現(xiàn)在有噪聲的情形下來進(jìn)行譯碼;創(chuàng)新試驗(yàn)二

15、:(7,4 )循環(huán)碼的編碼與譯碼1試驗(yàn)編碼原理:依據(jù)循環(huán)碼的代數(shù)性質(zhì)建立系統(tǒng)編碼的過程,可以把消息矢量用如下多項(xiàng)式表示:mxm k1xk1m k2xk2.m 1xm0要編碼成系統(tǒng)循環(huán)碼形式, 把消息比特移入碼字寄存器的最右邊 k 位,而把監(jiān)督n k n k比特加在最左邊的 n-k 個(gè)中,就要用 x 乘以 mx得到 x mx= n 1 n 2 n k 1 n km k 1 x m k 2 x . m 1 x m 0 xn kx mx= qx gx+ px ,其中 px可以表示為n k 1 n kpx= p n k 1 x . p 1 x p 0,就 px+ x mx n 1 n 2 n k 1

16、n k n k 1= m k 1 x m k 2 x . m 1 x m 0 x + p n k 1 x . p 1 x p 0另 Ux= px+ x n kmx,就 U=(p ,p ,p , ,p n k 1,m 0,m , ,m k 1);本試驗(yàn)依據(jù)以上原理, 用 matlab 實(shí)現(xiàn)書上例 6.8 系統(tǒng)形式的循環(huán)碼, 生成多3項(xiàng)式為 gx= 1 x x2試驗(yàn)譯碼原理:譯碼的試驗(yàn)原理 gx= ,在( n,k)循環(huán)碼中,3由于 gx能除盡 ,因此 x n 1 可分解成 gx和其他因式的乘積,記為 1 x xn x 1 g x h x 即可寫成就h* x= x4h xxn1g x 即 h x =

17、 x4h * x 式 hx的逆多項(xiàng)式;x2x1x3x1,其中監(jiān)督矩陣多項(xiàng)式可表示為Hxx2h*x ,xh*xh*x3(7,4)循環(huán)碼的編碼( 4 位)的程序:clear; clc; a=input 請(qǐng)輸入消息矢量:; %高次項(xiàng)系數(shù)在前的生成多項(xiàng)式Gx=1 0 1 1; %將數(shù)組 a 的高位依次放在數(shù)組 Data 的低位Data=zeros1,7; Data1=a4; Data2=a3; Data3=a2; Data4=a1; %Data 除以 Gx 得到余數(shù) Rx Qx,Rx=deconvData,Gx; b=Rx+Data; %將數(shù)組 b 的高位放在后面 c=b1; b1=b7; b7=c;

18、 c=b2; b2=b6; b6=c; c=b3; b3=b5; b5=c; %將數(shù)組 b 校正 for i=1:7 if remabsbi,2=0 bi=0;end end for i=1:7 if remabsbi,2=1 bi=1;end end disp輸入序列: ; a disp編碼輸出序列:; b 程序運(yùn)行結(jié)果為:轉(zhuǎn)變輸入序列運(yùn)行結(jié)果的編碼如下:序號(hào)輸入序列輸出序列序號(hào)輸入序列輸出序列1 0000 000 0000 9 1000 110 1000 2 0001 101 0001 10 1001 011 1001 3 0010 111 0010 11 1010 001 1010 4

19、0011 010 0011 12 1011 100 1011 5 0100 011 0100 13 1100 101 1100 6 0101 110 0101 14 1101 000 1101 7 0110 100 0110 15 1110 010 1110 8 0111 001 0111 16 1111 111 1111 4相對(duì)應(yīng)的譯碼和糾錯(cuò)( 7 位)程序:clear; clc; r=1 0 0 1 1 1 1; h=1,0,0;1,1,0;1,1,1;0,1,1;1,0,1;0,1,0;0,0,1; b=flipudh; s=r*b; for i=1:3 if remabssi,2=0

20、si=0;end end for i=1:3 if remabssi,2=1 si=1;end end if s=0 0 0 e=0 0 0 0 0 0 0 ; elseif s=1 0 0 e=0 0 0 0 0 0 1; elseif s=1 1 0 e=0 0 0 0 0 1 0; elseif s=1 1 1 e=0 0 0 0 1 0 0; elseif s=0 1 1 e=0 0 0 1 0 0 0; elseif s=1 0 1 e=0 0 1 0 0 0 0; elseif s=0 1 0 e=0 1 0 0 0 0 0; else s=0 0 1 e=1 0 0 0 0 0

21、0; end u=r+e; for i=1:7 if remabsui,2=0 ui=0;end end for i=1:7 if remabsui,2=1 ui=1;end end Data=zeros1,4; Data1=u4; Data2=u5; Data3=u6; Data4=u7; if e=0 0 0 0 0 0 0 disp沒有錯(cuò)誤: k=0,else disp第幾位錯(cuò)誤: k=finde ;end disp接收碼字 r disp譯碼輸出序列: Data 第幾位錯(cuò)誤: k = 5 接收碼字r = 1 0 0 1 1 1 1 譯碼輸出序列:Data =1 0 1 1 以上編碼有個(gè)缺

22、點(diǎn),就是它只能對(duì)一個(gè)消息矢量(4 位)進(jìn)行編碼,我又在這個(gè)基礎(chǔ)上編寫了一個(gè)可以同時(shí)對(duì)位數(shù)是 4 的倍數(shù)的消息矢量進(jìn)行編碼;5多位循環(huán)碼( 4 的倍數(shù))的編碼程序如下:clear; clc; a=1 1 0 0 1 0 1 1; X,N=sizea; %將信息碼分為 M 幀, 1 幀 4 個(gè)信息碼 M=ceilN/4; d=zeros1,4; b=zeros1,7*M; Data=zeros1,7; for k=1:M for j=1:4 dj=aj+k-1*4;end %生成多項(xiàng)式 Gx=1 0 1 1; Data1=d4; Data2=d3; Data3=d2; Data4=d1; %Dat

23、a除以 Gx 得到余數(shù) Rx Qx,Rx=deconvData,Gx; e=Rx+Data; b7*k-6:7*k=e1:7; c=b1+k-1*7; b1+k-1*7=b7+k-1*7; b7+k-1*7=c; c=b2+k-1*7; b2+k-1*7=b6+k-1*7; b6+k-1*7=c; c=b3+k-1*7; b3+k-1*7=b5+k-1*7; b5+k-1*7=c; end for i=1:M*7 if remabsbi,2=0 bi=0;end end for i=1:M*7 if remabsbi,2=1 bi=1;end end disp輸入序列: ; a disp編碼輸

24、出序列: ; b a = 0 1 1 程序運(yùn)行結(jié)果如下:輸入序列:1 1 0 0 1 編碼輸出序列: b = Columns 1 through 13 1 0 1 1 1 0 0 1 0 0 1 0 1 Column 14 1 6多位譯碼( 7 的倍數(shù))糾錯(cuò)程序:clear; clc; r=1 0 0 1 1 0 0 1 0 0 1 0 0 1 ; X,N=sizer; %將接收到的碼分為 M 幀,1 幀 7 個(gè)信息位 M=ceilN/7; h=1,0,0;1,1,0;1,1,1;0,1,1;1,0,1;0,1,0;0,0,1; b=flipudh; d=zeros1,7; U=zeros1,4*M; Data1=zeros1,7*M; Data=zeros1,7*M; for i=1:M for j=1:7 dj=rj+i-1*7;end s=d*b; for k=1:3 if remabssk,2=0 sk=0;end end for k=1:3 if remabssk,2=1 sk=1;end end if s=0 0 0 e=0 0 0 0 0 0 0 ; elseif s=1 0 0 e=0 0 0 0 0 0 1; elseif s=1 1 0 e=0 0 0 0 0 1 0; elseif s=1 1

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論