




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Harbin Institute of Technology信息論與編碼實驗報告基于MATLAB的(7,4)循環(huán)碼的編譯仿真院 系: 電子與信息工程學(xué)院 姓 名: 周才發(fā) 學(xué) 號: 13S005051 班 級: 通信二班 哈爾濱工業(yè)大學(xué)基于MATLAB的(7,4)循環(huán)碼的編譯仿真(電子與信息工程學(xué)院 13S005051 周才發(fā) 序號:15)1、 循環(huán)碼簡介隨著社會經(jīng)濟(jì)的迅速發(fā)展和科學(xué)技術(shù)的全面進(jìn)步,計算機事業(yè)的飛速發(fā)展,以計算機與通信技術(shù)為基礎(chǔ)的信息系統(tǒng)正處于蓬勃發(fā)展的時期。隨著經(jīng)濟(jì)文化水平的顯著提高,人們對生活質(zhì)量及工作軟件的要求也越來越高。在計算機通信信息碼中循環(huán)碼是線性分組碼的一個重要子
2、集,是目前研究得最成熟的一類碼。它有許多特殊的代數(shù)性質(zhì),它使計算機通信以一種以數(shù)據(jù)通信形式出現(xiàn),實現(xiàn)了在計算機與計算機之間或計算機與終端設(shè)備之間進(jìn)行有效的與正確地信息傳遞,它使得現(xiàn)代通信的可靠性與有效性實現(xiàn)了質(zhì)的飛躍。它是現(xiàn)代計算機技術(shù)與通信技術(shù)飛速發(fā)展的產(chǎn)物,在日常生活通信領(lǐng)域、武器控制系統(tǒng)等領(lǐng)域都被廣泛應(yīng)用。糾錯碼(error correcting code),在傳輸過程中發(fā)生錯誤后能在收端自行發(fā)現(xiàn)或糾正的碼。僅用來發(fā)現(xiàn)錯誤的碼一般常稱為檢錯碼。為使一種碼具有檢錯或糾錯能力,須對原碼字增加多余的碼元,以擴(kuò)大碼字之間的差別 ,即把原碼字按某種規(guī)則變成有一定剩余度(見信源編碼)的碼字,并使每個
3、碼字的碼之間有一定的關(guān)系。關(guān)系的建立稱為編碼。碼字到達(dá)收端后,可以根據(jù)編碼規(guī)則是否滿足以判定有無錯誤。當(dāng)不能滿足時,按一定規(guī)則確定錯誤所在位置并予以糾正。糾錯并恢復(fù)原碼字的過程稱為譯碼。檢錯碼與其他手段結(jié)合使用,可以糾錯。糾錯編碼又稱信道編碼,它與信源編碼是信息傳輸?shù)膬蓚€方面。它們之間存在對偶的關(guān)系。應(yīng)用信道譯碼直接對一些自然信息進(jìn)行處理,可以去掉剩余度,以達(dá)到壓縮數(shù)據(jù)的目的。為了使一種碼具有檢錯或糾錯能力,必須對原碼字增加多余的碼元,以擴(kuò)大碼字之間的差別,使一個碼字在一定數(shù)目內(nèi)的碼元上發(fā)生錯誤時,不致錯成另一個碼字。準(zhǔn)確地說,即把原碼字按某種規(guī)則變成有一定剩余度的碼字,并使每個碼字的碼元間有
4、一定的關(guān)系。關(guān)系的建立稱為編碼。碼字到達(dá)收端后,用編碼時所用的規(guī)則去檢驗。如果沒有錯誤,則原規(guī)則一定滿足,否則就不滿足。由此可以根據(jù)編碼規(guī)則是否滿足以判定有無錯誤。當(dāng)不能滿足時,在可糾能力之內(nèi)按一定的規(guī)則確定錯誤所在的位置,并予以糾正。糾錯并恢復(fù)原碼字的過程稱為譯碼;碼元間的關(guān)系為線性時,稱為線性碼;否則稱為非線性碼。檢錯碼與其他手段結(jié)合使用,可以糾錯。檢錯反饋重發(fā)系統(tǒng)(ARQ系統(tǒng))就是一例。循環(huán)碼是線性分組碼的一種,所以它具有線性分組碼的一般特性,此外還具有循環(huán)性。循環(huán)碼的編碼和解碼設(shè)備都不太復(fù)雜,且檢(糾)錯能力強。它不但可以檢測隨機的錯誤,還可以檢錯突發(fā)的錯誤。循環(huán)碼可以檢測長為或更短的
5、任何突發(fā)錯誤,包括首尾相接突發(fā)錯誤。循環(huán)碼是一種無權(quán)碼,循環(huán)碼編排的特點是相鄰兩個數(shù)碼之間符合卡諾圖中的鄰接條件,即相鄰兩個數(shù)碼之間只有一位碼元不同,碼元就是組成數(shù)碼的單元。符合這個特點的有多種方案,但循環(huán)碼只能是表中的那種。循環(huán)碼的優(yōu)點是沒有瞬時錯誤,因為在數(shù)碼變換過程中,在速度上會有快有慢,中間經(jīng)過其它一些數(shù)碼形式,稱它們?yōu)樗矔r錯誤。這在某些數(shù)字系統(tǒng)中是不允許的,為此希望相鄰兩個數(shù)碼之間僅有一位碼元不同,即滿足鄰接條件,這樣就不會產(chǎn)生瞬時錯誤。循環(huán)碼就是這樣一種編碼,它可以在卡諾圖中依次循環(huán)得到。循環(huán)碼又稱格雷碼(Gray Code)。2、 實驗要求(1)利用(7,4)系統(tǒng)循環(huán)碼的生成多項
6、式為:,請設(shè)計該循環(huán)碼的編碼器;(2)隨機產(chǎn)生重量為0或1的八種錯誤圖樣中的一種,得到實際接收碼字。(3)根據(jù)接收到的碼字進(jìn)行譯碼。3、 編譯碼原理循環(huán)碼最大的特點就是碼字的循環(huán)特性,所謂循環(huán)特性是指:循環(huán)碼中任一許用碼組經(jīng)過循環(huán)移位后,所得到的碼組仍然是許用碼組,也就是說,不論是左移還是右移,也不論移多少位,仍然是許用的循環(huán)碼組。循環(huán)碼的生成多項式寫為,它是循環(huán)碼碼集中唯一的,冪次為的碼多項式,則是一個冪次為的碼多項式。按模運算,此時: 即,且因也是次冪,故。由于它是循環(huán)碼,故按模運算后的“余式”也是循環(huán)碼的一個碼字,它必能被整除,即:由以上兩式可以得到:從上式中可以看出,生成多項式g(x)
7、應(yīng)該是的一個因式,即循環(huán)碼多項式應(yīng)該是的一個次因式。由生成多項式可以得出相應(yīng)的典型生成矩陣及標(biāo)準(zhǔn)監(jiān)督矩陣:已知(7,4)循環(huán)碼的生成多項式和校驗多項式分別為:,。寫得其生成矩陣和校驗矩陣分別為:循環(huán)碼的編譯碼過程如下:(1) 編碼過程第一步:將信息碼字表示為,其最高次冪為;第二步:將與求模得出相應(yīng)的余式;第三步:編碼結(jié)果為。(2) 譯碼過程第一步:由接收碼字與監(jiān)督矩陣相乘得出錯誤圖樣;第二步:判斷是否為零。若不為零,則出錯。在假定至多只有一位錯的情況下,可以有效地譯了相應(yīng)的信息碼字。第三步:在出錯的情況下,將與標(biāo)準(zhǔn)監(jiān)督矩陣對比,得出錯誤的比特位并進(jìn)行更正得出前四位為信息碼字。4、 仿真結(jié)果(1
8、) 編譯碼程序說明編譯碼程序由三個子函數(shù)及界面函數(shù)組成。三個子函數(shù)分別完成編碼、譯碼及字符提取的工作,以下為三個函數(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% 碼長與信息碼字n=2m-1;k=n-m; %產(chǎn)生生成矩陣parmat和校驗矩陣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é)果% 碼長與信息碼字n=2m-1;k=n-m;%產(chǎn)生生成矩陣parmat和校驗矩陣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);% 計算伴隨式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.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_decode=0 0 0 0 0 0 0;
19、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.figure1); % - Outputs f
20、rom 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% handles structure with h
21、andles 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 defined in a future ve
22、rsion 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);guidata(hObject,handles
23、); % - 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=extract_bits(handles.
24、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 inputcode (see GCBO)
25、% 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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 武裝直升機購買合同協(xié)議
- 商務(wù)用酒合同協(xié)議
- 正規(guī)地攤經(jīng)濟(jì)合同協(xié)議
- 含稅銷售合同協(xié)議
- 商標(biāo)代理公司合同協(xié)議
- 商業(yè)秘密協(xié)議英文合同
- 商場店面轉(zhuǎn)兌合同協(xié)議
- 商場和餐飲商家合同協(xié)議
- 德國租車位合同協(xié)議
- 商業(yè)產(chǎn)品買賣合同協(xié)議
- 中華人民共和國民營經(jīng)濟(jì)促進(jìn)法
- 2025-2030中國船用導(dǎo)航雷達(dá)行業(yè)市場發(fā)展分析及發(fā)展趨勢與投資前景研究報告
- 礦山探礦證轉(zhuǎn)讓合同協(xié)議
- 離散數(shù)學(xué)中的網(wǎng)絡(luò)科學(xué)研究-全面剖析
- 外包免責(zé)協(xié)議書模板
- 廣東省廣州市2025屆普通高中畢業(yè)班綜合測試(二)物理試題(含答案)
- 護(hù)士執(zhí)業(yè)資格考試資料2024
- 貴州省考試院2025年4月高三年級適應(yīng)性考試歷史試題及答案
- 五一節(jié)后復(fù)工復(fù)產(chǎn)培訓(xùn)
- 《休閑農(nóng)業(yè)》課件 項目六 休閑農(nóng)業(yè)經(jīng)營管理
- T-CWEC 40-2023 防汛排澇抗旱一體化泵車
評論
0/150
提交評論