7,4循環碼的編碼和譯碼教學內容_第1頁
7,4循環碼的編碼和譯碼教學內容_第2頁
7,4循環碼的編碼和譯碼教學內容_第3頁
7,4循環碼的編碼和譯碼教學內容_第4頁
7,4循環碼的編碼和譯碼教學內容_第5頁
已閱讀5頁,還剩10頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、( 7, 4) 循 環 碼 的 編 碼 和譯碼 精品文檔 程,可以把消息矢量用如下多項式表示: k 1 k 2 m(x) mk 1xmk 2 x. m1x m0 要編碼成系統循環碼形式,把消息比特移入碼字寄存器的最右邊 k nk 位,而把監督比特加在最左邊的 n-k個中,則要用 xn k乘以 m(x)得到 nk x n 1 n 2 n k 1 n k mk 1xmk 2x. m1xm0 x nk x m(x)= q(x) g(x)+ p(x) ,其中 p(x) 可以表示為 p(x)= p nk1 n k 1x. n 1n = mk 1 xmk 2x nk 另 U(x)= p(x)+ x n k

2、 p1x m(x), p0 nk1 m1x 則 U=( p0 , ,則 p(x)+ x nk m0 x + pn k 1x k m(x) k1 . p1x p0 p1, p2, pn,k 1 , m0 , 7,4)循環碼的編碼譯碼 編碼的實驗原理: 根據循環碼的代數性質建立系統編碼的過 m1 ,m k,1 )。 本實驗根據以上原理,用 matlab實現書上例 6.8 系統形式的循環 3 碼,生成多項式為 g(x)= 1 x x3 7,4)循環碼的編碼的程序如下: clear; clc; a=1 0 1 1; %高次項系數在前的生成多項式 Gx=1 0 1 1; %將數組 a 的高位依次放在數組

3、 Data的低位 Data=zeros(1,7); Data(1)=a(4); Data(2)=a(3); Data(3)=a(2); Data(4)=a(1); %Data 除以 Gx 得到余數 Rx 收集于網絡,如有侵權請聯系管理員刪除 精品文檔 Qx,Rx=deconv(Data,Gx); b=Rx+Data; %將數組 b 的高位放在后面 c=b(1); b(1)=b(7); b(7)=c; c=b(2); b(2)=b(6); b(6)=c; c=b(3); b(3)=b(5); b(5)=c; %將數組 b 校正 for i=1:7 if rem(abs(b(i),2)=0 b(i

4、)=0;end end for i=1:7 if rem(abs(b(i),2)=1 b(i)=1;end end disp(輸入序列: ); 收集于網絡,如有侵權請聯系管理員刪除 精品文檔 a disp(編碼輸出序列: ); b 程序運行結果為:輸入序列: a = 1 1 0 0 編碼輸出序列: b = 1 0 1 1 1 0 0 改變輸入序列 a=1 0 1 1,運行結果:輸入序列: a = 1 0 1 1 編碼輸出序列: b = 1 0 0 1 0 1 1 運行結果的編碼如下: 序號 輸入序列 輸出序列 序號 輸入序列 輸出序列 1 0000 000 0000 9 1000 110 10

5、00 2 0001 101 0001 10 1001 011 1001 3 0010 111 0010 11 1010 001 1010 4 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 譯碼的實驗原理 g(x)= 1 x,在x3( n,k)循環碼中,由于 g(x)能除盡 , n 因此 x 1 可分解成 g(x)和其他

6、因式的乘積,記為 xn 1 g(x)h(x) 收集于網絡,如有侵權請聯系管理員刪除 精品文檔 即可寫成 h(x) 即 h (x) = x4 x2 x 1 則 h*(x)= x 4 x 3 ,x其中1 h (x)式 h(x) 的逆多項式。 監督矩陣多項式可表示為 x2h* (x) H(x) xh* (x) h*(x) 相對應的譯碼和糾錯(一位)程序如下: 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=flipud(h); s=r*b; for i=1:3 if rem(abs(s(i),2)

7、=0 s(i)=0;end end for i=1:3 if rem(abs(s(i),2)=1 收集于網絡,如有侵權請聯系管理員刪除 精品文檔 s(i)=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

8、 else s=0 0 1 e=1 0 0 0 0 0 0 end u=r+e; for i=1:7 if rem(abs(u(i),2)=0 收集于網絡,如有侵權請聯系管理員刪除 精品文檔 u(i)=0;end end for i=1:7 if rem(abs(u(i),2)=1 u(i)=1;end end Data=zeros(1,4); Data(1)=u(4); Data(2)=u(5); Data(3)=u(6); Data(4)=u(7); if e=0 0 0 0 0 0 0 disp(第幾位錯誤: ) k=0,else disp(第幾位錯誤: ) k=find(e) ;end

9、 disp(接受碼字 ) r disp(編碼輸出序列: ) Data 收集于網絡,如有侵權請聯系管理員刪除 精品文檔 運行程序結果如下: e = 0 0 0 0 1 0 0 第幾位錯誤: k = 5 接受碼 r = 1 0 0 1 1 1 1 編碼輸出序列: Data =1 0 1 1 以上編碼有個缺點,就是它只能對一個消息矢量( 4 位)進行編 碼,我又在這個基礎上編寫了一個可以同時對位數是 4 的倍數的消 息矢量進行編碼,多位循環碼的編碼程序如下: clear; clc; a=1 1 0 0 1 0 1 1; X,N=size(a); %將信息碼分為 M 幀,1幀 4個信息碼 M=ceil

10、(N/4); d=zeros(1,4); b=zeros(1,7*M); Data=zeros(1,7); for k=1:M for j=1:4 d(j)=a(j+(k-1)*4);end %生成多項式 Gx=1 0 1 1; 收集于網絡,如有侵權請聯系管理員刪除 精品文檔 Data(1)=d(4); Data(2)=d(3); Data(3)=d(2); Data(4)=d(1); %Data 除以 Gx 得到余數 Rx Qx,Rx=deconv(Data,Gx); e=Rx+Data; b(7*k-6:7*k)=e(1:7); c=b(1+(k-1)*7); b(1+(k-1)*7)=b

11、(7+(k-1)*7); b(7+(k-1)*7)=c; c=b(2+(k-1)*7); b(2+(k-1)*7)=b(6+(k-1)*7); b(6+(k-1)*7)=c; c=b(3+(k-1)*7); b(3+(k-1)*7)=b(5+(k-1)*7); b(5+(k-1)*7)=c; end for i=1:M*7 if rem(abs(b(i),2)=0 收集于網絡,如有侵權請聯系管理員刪除 精品文檔 b(i)=0;end end for i=1:M*7 if rem(abs(b(i),2)=1 b(i)=1;end end disp(輸入序列: ); a disp(編碼輸出序列:

12、); b 程序運行結果如下:輸入序列: 1 1 0 0 1 0 1 編碼輸出序列: b = Columns 1 through 13 1 0 0 1 0 1 1 0 1 1 1 0 0 Column 14 1 相應的多位譯碼糾錯程序如下: clc; clear; 收集于網絡,如有侵權請聯系管理員刪除 精品文檔 r=1 0 0 1 1 0 0 1 0 0 1 0 0 1 ; X,N=size(r); %將接收到的碼分為 M 幀,1幀 7個信息位 M=ceil(N/7); h=1,0,0;1,1,0;1,1,1;0,1,1;1,0,1;0,1,0;0,0,1; b=flipud(h); d=zer

13、os(1,7); U=zeros(1,4*M); Data=zeros(1,7*M); for i=1:M for j=1:7 d(j)=r(j+(i-1)*7);end s=d*b; for k=1:3 if rem(abs(s(k),2)=0 s(k)=0;end end for k=1:3 if rem(abs(s(k),2)=1 s(k)=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 el

14、seif 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 0 end u=d+e; for k=1:7 if rem(abs(u(k),2)=0 u(k)=0;end 收集于網絡,如有侵權請聯系管理員刪除 精品文檔 end for k=1:7 if rem(abs(u(k),2)=1 u(k)=1;end end Data(1+7*(i-1)=e(1); D

15、ata(2+7*(i-1)=e(2); Data(3+7*(i-1)=e(3); Data(4+7*(i-1)=e(4); Data(5+7*(i-1)=e(5); Data(6+7*(i-1)=e(6); Data(7+7*(i-1)=e(7); U(1+(i-1)*4)=u(4); U(2+(i-1)*4)=u(5); U(3+(i-1)*4)=u(6); U(4+(i-1)*4)=u(7); end if Data=zeros(1,7*M); 收集于網絡,如有侵權請聯系管理員刪除 精品文檔 m=0,else j,m=find(Data);end disp(第幾位錯誤: ); m disp(接收到的碼字: ); r disp(編碼輸出序列: ); U 運行結果如下:

溫馨提示

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

評論

0/150

提交評論