基于MATLAB的(7,4)循環(huán)碼的編譯仿真_第1頁
基于MATLAB的(7,4)循環(huán)碼的編譯仿真_第2頁
基于MATLAB的(7,4)循環(huán)碼的編譯仿真_第3頁
基于MATLAB的(7,4)循環(huán)碼的編譯仿真_第4頁
基于MATLAB的(7,4)循環(huán)碼的編譯仿真_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Harbin Institute of Technology信息論與編碼實(shí)驗(yàn)報(bào)告基于MATLAB的(7,4)循環(huán)碼的編譯仿真院 系: 電子與信息工程學(xué)院 姓 名: 周才發(fā) 學(xué) 號(hào): 13S005051 班 級(jí): 通信二班 哈爾濱工業(yè)大學(xué)基于MATLAB的(7,4)循環(huán)碼的編譯仿真(電子與信息工程學(xué)院 13S005051 周才發(fā) 序號(hào):15)1、 循環(huán)碼簡(jiǎn)介隨著社會(huì)經(jīng)濟(jì)的迅速發(fā)展和科學(xué)技術(shù)的全面進(jìn)步,計(jì)算機(jī)事業(yè)的飛速發(fā)展,以計(jì)算機(jī)與通信技術(shù)為基礎(chǔ)的信息系統(tǒng)正處于蓬勃發(fā)展的時(shí)期。隨著經(jīng)濟(jì)文化水平的顯著提高,人們對(duì)生活質(zhì)量及工作軟件的要求也越來越高。在計(jì)算機(jī)通信信息碼中循環(huán)碼是線性分組碼的一個(gè)重要子

2、集,是目前研究得最成熟的一類碼。它有許多特殊的代數(shù)性質(zhì),它使計(jì)算機(jī)通信以一種以數(shù)據(jù)通信形式出現(xiàn),實(shí)現(xiàn)了在計(jì)算機(jī)與計(jì)算機(jī)之間或計(jì)算機(jī)與終端設(shè)備之間進(jìn)行有效的與正確地信息傳遞,它使得現(xiàn)代通信的可靠性與有效性實(shí)現(xiàn)了質(zhì)的飛躍。它是現(xiàn)代計(jì)算機(jī)技術(shù)與通信技術(shù)飛速發(fā)展的產(chǎn)物,在日常生活通信領(lǐng)域、武器控制系統(tǒng)等領(lǐng)域都被廣泛應(yīng)用。糾錯(cuò)碼(error correcting code),在傳輸過程中發(fā)生錯(cuò)誤后能在收端自行發(fā)現(xiàn)或糾正的碼。僅用來發(fā)現(xiàn)錯(cuò)誤的碼一般常稱為檢錯(cuò)碼。為使一種碼具有檢錯(cuò)或糾錯(cuò)能力,須對(duì)原碼字增加多余的碼元,以擴(kuò)大碼字之間的差別 ,即把原碼字按某種規(guī)則變成有一定剩余度(見信源編碼)的碼字,并使每個(gè)

3、碼字的碼之間有一定的關(guān)系。關(guān)系的建立稱為編碼。碼字到達(dá)收端后,可以根據(jù)編碼規(guī)則是否滿足以判定有無錯(cuò)誤。當(dāng)不能滿足時(shí),按一定規(guī)則確定錯(cuò)誤所在位置并予以糾正。糾錯(cuò)并恢復(fù)原碼字的過程稱為譯碼。檢錯(cuò)碼與其他手段結(jié)合使用,可以糾錯(cuò)。糾錯(cuò)編碼又稱信道編碼,它與信源編碼是信息傳輸?shù)膬蓚€(gè)方面。它們之間存在對(duì)偶的關(guān)系。應(yīng)用信道譯碼直接對(duì)一些自然信息進(jìn)行處理,可以去掉剩余度,以達(dá)到壓縮數(shù)據(jù)的目的。為了使一種碼具有檢錯(cuò)或糾錯(cuò)能力,必須對(duì)原碼字增加多余的碼元,以擴(kuò)大碼字之間的差別,使一個(gè)碼字在一定數(shù)目?jī)?nèi)的碼元上發(fā)生錯(cuò)誤時(shí),不致錯(cuò)成另一個(gè)碼字。準(zhǔn)確地說,即把原碼字按某種規(guī)則變成有一定剩余度的碼字,并使每個(gè)碼字的碼元間有

4、一定的關(guān)系。關(guān)系的建立稱為編碼。碼字到達(dá)收端后,用編碼時(shí)所用的規(guī)則去檢驗(yàn)。如果沒有錯(cuò)誤,則原規(guī)則一定滿足,否則就不滿足。由此可以根據(jù)編碼規(guī)則是否滿足以判定有無錯(cuò)誤。當(dāng)不能滿足時(shí),在可糾能力之內(nèi)按一定的規(guī)則確定錯(cuò)誤所在的位置,并予以糾正。糾錯(cuò)并恢復(fù)原碼字的過程稱為譯碼;碼元間的關(guān)系為線性時(shí),稱為線性碼;否則稱為非線性碼。檢錯(cuò)碼與其他手段結(jié)合使用,可以糾錯(cuò)。檢錯(cuò)反饋重發(fā)系統(tǒng)(ARQ系統(tǒng))就是一例。循環(huán)碼是線性分組碼的一種,所以它具有線性分組碼的一般特性,此外還具有循環(huán)性。循環(huán)碼的編碼和解碼設(shè)備都不太復(fù)雜,且檢(糾)錯(cuò)能力強(qiáng)。它不但可以檢測(cè)隨機(jī)的錯(cuò)誤,還可以檢錯(cuò)突發(fā)的錯(cuò)誤。循環(huán)碼可以檢測(cè)長(zhǎng)為或更短的

5、任何突發(fā)錯(cuò)誤,包括首尾相接突發(fā)錯(cuò)誤。循環(huán)碼是一種無權(quán)碼,循環(huán)碼編排的特點(diǎn)是相鄰兩個(gè)數(shù)碼之間符合卡諾圖中的鄰接條件,即相鄰兩個(gè)數(shù)碼之間只有一位碼元不同,碼元就是組成數(shù)碼的單元。符合這個(gè)特點(diǎn)的有多種方案,但循環(huán)碼只能是表中的那種。循環(huán)碼的優(yōu)點(diǎn)是沒有瞬時(shí)錯(cuò)誤,因?yàn)樵跀?shù)碼變換過程中,在速度上會(huì)有快有慢,中間經(jīng)過其它一些數(shù)碼形式,稱它們?yōu)樗矔r(shí)錯(cuò)誤。這在某些數(shù)字系統(tǒng)中是不允許的,為此希望相鄰兩個(gè)數(shù)碼之間僅有一位碼元不同,即滿足鄰接條件,這樣就不會(huì)產(chǎn)生瞬時(shí)錯(cuò)誤。循環(huán)碼就是這樣一種編碼,它可以在卡諾圖中依次循環(huán)得到。循環(huán)碼又稱格雷碼(Gray Code)。2、 實(shí)驗(yàn)要求(1)利用(7,4)系統(tǒng)循環(huán)碼的生成多項(xiàng)

6、式為:,請(qǐng)?jiān)O(shè)計(jì)該循環(huán)碼的編碼器;(2)隨機(jī)產(chǎn)生重量為0或1的八種錯(cuò)誤圖樣中的一種,得到實(shí)際接收碼字。(3)根據(jù)接收到的碼字進(jìn)行譯碼。3、 編譯碼原理循環(huán)碼最大的特點(diǎn)就是碼字的循環(huán)特性,所謂循環(huán)特性是指:循環(huán)碼中任一許用碼組經(jīng)過循環(huán)移位后,所得到的碼組仍然是許用碼組,也就是說,不論是左移還是右移,也不論移多少位,仍然是許用的循環(huán)碼組。循環(huán)碼的生成多項(xiàng)式寫為,它是循環(huán)碼碼集中唯一的,冪次為的碼多項(xiàng)式,則是一個(gè)冪次為的碼多項(xiàng)式。按模運(yùn)算,此時(shí): 即,且因也是次冪,故。由于它是循環(huán)碼,故按模運(yùn)算后的“余式”也是循環(huán)碼的一個(gè)碼字,它必能被整除,即:由以上兩式可以得到:從上式中可以看出,生成多項(xiàng)式g(x)

7、應(yīng)該是的一個(gè)因式,即循環(huán)碼多項(xiàng)式應(yīng)該是的一個(gè)次因式。由生成多項(xiàng)式可以得出相應(yīng)的典型生成矩陣及標(biāo)準(zhǔn)監(jiān)督矩陣:已知(7,4)循環(huán)碼的生成多項(xiàng)式和校驗(yàn)多項(xiàng)式分別為:,。寫得其生成矩陣和校驗(yàn)矩陣分別為:循環(huán)碼的編譯碼過程如下:(1) 編碼過程第一步:將信息碼字表示為,其最高次冪為;第二步:將與求模得出相應(yīng)的余式;第三步:編碼結(jié)果為。(2) 譯碼過程第一步:由接收碼字與監(jiān)督矩陣相乘得出錯(cuò)誤圖樣;第二步:判斷是否為零。若不為零,則出錯(cuò)。在假定至多只有一位錯(cuò)的情況下,可以有效地譯了相應(yīng)的信息碼字。第三步:在出錯(cuò)的情況下,將與標(biāo)準(zhǔn)監(jiān)督矩陣對(duì)比,得出錯(cuò)誤的比特位并進(jìn)行更正得出前四位為信息碼字。4、 仿真結(jié)果(1

8、) 編譯碼程序說明編譯碼程序由三個(gè)子函數(shù)及界面函數(shù)組成。三個(gè)子函數(shù)分別完成編碼、譯碼及字符提取的工作,以下為三個(gè)函數(shù)的源碼:%cyle_code.mfunction msg_en= cycle_code(m,msg) %循環(huán)碼編碼函數(shù)% 輸入?yún)?shù)% m:監(jiān)督位的位數(shù);% msg:信息碼字% 輸出參數(shù)% msg_en:編碼結(jié)果 % input parameters% 碼長(zhǎng)與信息碼字n=2m-1;k=n-m; %產(chǎn)生生成矩陣parmat和校驗(yàn)矩陣genmatpol = cyclpoly(n,k);parmat,genmat,k = cyclgen(7,pol);% 調(diào)整生成矩陣與監(jiān)督矩陣gen_t

9、emp=eye(k);par_temp=eye(m);parmat=par_temp genmat(:,1:m)'genmat=gen_temp genmat(:,1:m);%產(chǎn)生編碼后的碼字空間 Cmsg_en=rem(msg*genmat,2);%cyle_decode.mfunction code=cycle_decode(m,msg) %循環(huán)碼譯碼函數(shù)% 輸入?yún)?shù)% m:監(jiān)督位的位數(shù);% msg:信息碼字% 輸出參數(shù)% code:譯碼結(jié)果% 碼長(zhǎng)與信息碼字n=2m-1;k=n-m;%產(chǎn)生生成矩陣parmat和校驗(yàn)矩陣genmatpol = cyclpoly(n,k);parma

10、t,genmat,k = cyclgen(7,pol);% 調(diào)整生成矩陣與監(jiān)督矩陣gen_temp=eye(k);par_temp=eye(m);parmat=par_temp genmat(:,1:m)'genmat=gen_temp genmat(:,1:m);% 計(jì)算伴隨式S=rem(msg*parmat',2)'count=0;% 比較譯碼if (sum(S)=0) for (ii=1:1:n) for(jj=1:1:m) if(S(jj)=parmat(jj,ii) count=count+1; end; end; if (count=3) mis=ii; e

11、lse count=0; end; end;else mis=0;end; if (mis) msg(mis)=rem(msg(mis)+1,2);end;% 譯碼結(jié)果code=msg(1:k);%extracts_bits.mfunction msg=extract_bits(inf_msg) % 比特提取函數(shù)% 輸入?yún)?shù)% inf_msg:信息碼字% 輸出參數(shù)% msg:提取結(jié)果 warning offlen=length(inf_msg);msg=zeros(1,len);for ii=1:len msg(1,ii)=str2num(inf_msg(ii); %將字符轉(zhuǎn)換成數(shù)字end;%

12、 msg%cycle.mfunction varargout = cycle(varargin)% CYCLE MATLAB code for cycle.fig% CYCLE, by itself, creates a new CYCLE or raises the existing% singleton*.% H = CYCLE returns the handle to a new CYCLE or the handle to% the existing singleton*.% CYCLE('CALLBACK',hObject,eventData,handles,.)

13、calls the local% function named CALLBACK in CYCLE.M with the given input arguments.% CYCLE('Property','Value',.) creates a new CYCLE or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before cycle_OpeningFcn gets called. An% unrec

14、ognized property name or invalid value makes property application% stop. All inputs are passed to cycle_OpeningFcn via varargin.% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one% instance to run (singleton)".% See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above te

15、xt to modify the response to help cycle % Last Modified by GUIDE v2.5 30-Nov-2013 21:58:46 % Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, . 'gui_Singleton', gui_Singleton, . 'gui_OpeningFcn', cycle_OpeningFcn, . 'gui_O

16、utputFcn', cycle_OutputFcn, . 'gui_LayoutFcn', , . 'gui_Callback', );if nargin && ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);end if nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end% End initializ

17、ation code - DO NOT EDIT % - Executes just before cycle is made visible.function cycle_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure wi

18、th handles and user data (see GUIDATA)% varargin command line arguments to cycle (see VARARGIN)handles.output_code = hObject; handles.m=3;handles.n=2(handles.m)-1;handles.k=handles.n-handles.m; handles.input_msg=0 0 0 0;handles.output_msg=0 0 0 0;handles.output_encode=0 0 0 0 0 0 0;handles.output_de

19、code=0 0 0 0 0 0 0;put_decode=0 0 0 0 0 0 0;handles.flag=0;guidata(hObject, handles);% Choose default command line output for cyclehandles.output = hObject; % Update handles structureguidata(hObject, handles); % UIWAIT makes cycle wait for user response (see UIRESUME)% uiwait(handles.figu

20、re1); % - Outputs from this function are returned to the command line.function varargout = cycle_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handl

21、es structure with handles and user data (see GUIDATA) % Get default command line output from handles structurevarargout1 = handles.output; % - Executes on button press in encode.function encode_Callback(hObject, eventdata, handles)% hObject handle to encode (see GCBO)% eventdata reserved - to be def

22、ined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)handles.code=extract_bits(handles.codes);% guidata(hObject,handles);handles.encode=cycle_code(handles.m,handles.code)handles.flag=0;str=num2str(handles.encode);set(handles.outcode,'string',str);guid

23、ata(hObject,handles); % - Executes on button press in decode.function decode_Callback(hObject, eventdata, handles)% hObject handle to decode (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)handles.input_decode=ex

24、tract_bits(handles.codes);guidata(hObject,handles); handles.decode=cycle_decode(handles.m,handles.input_decode);handles.flag=1;str=num2str(handles.decode);set(handles.outcode,'string',str);guidata(hObject,handles); function inputcode_Callback(hObject, eventdata, handles)% hObject handle to i

25、nputcode (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)handles.codes=get(hObject,'String');guidata(hObject, handles);% Hints: get(hObject,'String') returns contents of inputcode as text% str2double(get(hObject,'String') returns contents of inputcode as a double % - Executes during object creation, after setting all properties.function inputcode_CreateFcn(hObject, eventdata, handles)% hObject handle to inputcode (see GCBO)% eventdata reserved - to

溫馨提示

  • 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)論