ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:130.45KB ,
资源ID:9871670      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9871670.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于MATLAB的74循环码的编译仿真设计.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于MATLAB的74循环码的编译仿真设计.docx

1、基于MATLAB的74循环码的编译仿真设计Harbin Institute of Technology信息论与编码实验报告基于MATLAB的(7,4)循环码的编译仿真院 系: 电子与信息工程学院 姓 名: 周才发 学 号: 13S005051 班 级: 通信二班 工业大学基于MATLAB的(7,4)循环码的编译仿真(电子与信息工程学院 13S005051 周才发 序号:15)1、 循环码简介随着社会经济的迅速发展和科学技术的全面进步,计算机事业的飞速发展,以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。随着经济文化水平的显著提高,人们对生活质量及工作软件的要求也越来越高。在计算机通信信

2、息码中循环码是线性分组码的一个重要子集,是目前研究得最成熟的一类码。它有许多特殊的代数性质,它使计算机通信以一种以数据通信形式出现,实现了在计算机与计算机之间或计算机与终端设备之间进行有效的与正确地信息传递,它使得现代通信的可靠性与有效性实现了质的飞跃。它是现代计算机技术与通信技术飞速发展的产物,在日常生活通信领域、武器控制系统等领域都被广泛应用。纠错码(error correcting code),在传输过程中发生错误后能在收端自行发现或纠正的码。仅用来发现错误的码一般常称为检错码。为使一种码具有检错或纠错能力,须对原码字增加多余的码元,以扩大码字之间的差别 ,即把原码字按某种规则变成有一定

3、剩余度(见信源编码)的码字,并使每个码字的码之间有一定的关系。关系的建立称为编码。码字到达收端后,可以根据编码规则是否满足以判定有无错误。当不能满足时,按一定规则确定错误所在位置并予以纠正。纠错并恢复原码字的过程称为译码。检错码与其他手段结合使用,可以纠错。纠错编码又称信道编码,它与信源编码是信息传输的两个方面。它们之间存在对偶的关系。应用信道译码直接对一些自然信息进行处理,可以去掉剩余度,以达到压缩数据的目的。为了使一种码具有检错或纠错能力,必须对原码字增加多余的码元,以扩大码字之间的差别,使一个码字在一定数目的码元上发生错误时,不致错成另一个码字。准确地说,即把原码字按某种规则变成有一定剩

4、余度的码字,并使每个码字的码元间有一定的关系。关系的建立称为编码。码字到达收端后,用编码时所用的规则去检验。如果没有错误,则原规则一定满足,否则就不满足。由此可以根据编码规则是否满足以判定有无错误。当不能满足时,在可纠能力之按一定的规则确定错误所在的位置,并予以纠正。纠错并恢复原码字的过程称为译码;码元间的关系为线性时,称为线性码;否则称为非线性码。检错码与其他手段结合使用,可以纠错。检错反馈重发系统(ARQ系统)就是一例。循环码是线性分组码的一种,所以它具有线性分组码的一般特性,此外还具有循环性。循环码的编码和解码设备都不太复杂,且检(纠)错能力强。它不但可以检测随机的错误,还可以检错突发的

5、错误。循环码可以检测长为或更短的任何突发错误,包括首尾相接突发错误。循环码是一种无权码,循环码编排的特点是相邻两个数码之间符合卡诺图中的邻接条件,即相邻两个数码之间只有一位码元不同,码元就是组成数码的单元。符合这个特点的有多种方案,但循环码只能是表中的那种。循环码的优点是没有瞬时错误,因为在数码变换过程中,在速度上会有快有慢,中间经过其它一些数码形式,称它们为瞬时错误。这在某些数字系统中是不允许的,为此希望相邻两个数码之间仅有一位码元不同,即满足邻接条件,这样就不会产生瞬时错误。循环码就是这样一种编码,它可以在卡诺图中依次循环得到。循环码又称格雷码(Gray Code)。2、 实验要求(1)利

6、用(7,4)系统循环码的生成多项式为:,请设计该循环码的编码器;(2)随机产生重量为0或1的八种错误图样中的一种,得到实际接收码字。(3)根据接收到的码字进行译码。3、 编译码原理循环码最大的特点就是码字的循环特性,所谓循环特性是指:循环码中任一许用码组经过循环移位后,所得到的码组仍然是许用码组,也就是说,不论是左移还是右移,也不论移多少位,仍然是许用的循环码组。循环码的生成多项式写为,它是循环码码集中唯一的,幂次为的码多项式,则是一个幂次为的码多项式。按模运算,此时: 即,且因也是次幂,故。由于它是循环码,故按模运算后的“余式”也是循环码的一个码字,它必能被整除,即: 由以上两式可以得到:

7、从上式中可以看出,生成多项式g(x)应该是的一个因式,即循环码多项式应该是的一个次因式。由生成多项式可以得出相应的典型生成矩阵及标准监督矩阵: 已知(7,4)循环码的生成多项式和校验多项式分别为:,。写得其生成矩阵和校验矩阵分别为: 循环码的编译码过程如下:(1) 编码过程第一步:将信息码字表示为,其最高次幂为;第二步:将与求模得出相应的余式;第三步:编码结果为。(2) 译码过程第一步:由接收码字与监督矩阵相乘得出错误图样;第二步:判断是否为零。若不为零,则出错。在假定至多只有一位错的情况下,可以有效地译了相应的信息码字。第三步:在出错的情况下,将与标准监督矩阵对比,得出错误的比特位并进行更正

8、得出前四位为信息码字。4、 仿真结果(1) 编译码程序说明编译码程序由三个子函数及界面函数组成。三个子函数分别完成编码、译码及字符提取的工作,以下为三个函数的源码:%cyle_code.mfunction msg_en= cycle_code(m,msg) %循环码编码函数% 输入参数% m:监督位的位数;% msg:信息码字% 输出参数% msg_en:编码结果 % input parameters% 码长与信息码字n=2m-1;k=n-m; %产生生成矩阵parmat和校验矩阵genmatpol = cyclpoly(n,k);parmat,genmat,k = cyclgen(7,pol

9、);% 调整生成矩阵与监督矩阵gen_temp=eye(k);par_temp=eye(m);parmat=par_temp genmat(:,1:m);genmat=gen_temp genmat(:,1:m);%产生编码后的码字空间 Cmsg_en=rem(msg*genmat,2);%cyle_decode.mfunction code=cycle_decode(m,msg) %循环码译码函数% 输入参数% m:监督位的位数;% msg:信息码字% 输出参数% code:译码结果% 码长与信息码字n=2m-1;k=n-m;%产生生成矩阵parmat和校验矩阵genmatpol = cyc

10、lpoly(n,k);parmat,genmat,k = cyclgen(7,pol);% 调整生成矩阵与监督矩阵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

11、; else count=0; end; end;else mis=0;end; if (mis) msg(mis)=rem(msg(mis)+1,2);end;% 译码结果code=msg(1:k);%extracts_bits.mfunction msg=extract_bits(inf_msg) % 比特提取函数% 输入参数% inf_msg:信息码字% 输出参数% msg:提取结果 warning offlen=length(inf_msg);msg=zeros(1,len);for ii=1:len msg(1,ii)=str2num(inf_msg(ii); %将字符转换成数字en

12、d;% 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,.) calls t

13、he 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% unrecognized property name or in

14、valid value makes property application% stop. All inputs are passed to cycle_OpeningFcn via varargin.% *See GUI Options on GUIDEs Tools menu. Choose GUI allows only one% instance to run (singleton).% See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help cycle % La

15、st 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_OutputFcn, cycle_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & isc

16、har(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 initialization code - DO NOT EDIT % - Executes just before cycle is made visible.function cycle_OpeningFcn(hObject, eventd

17、ata, 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 with handles and user data (see GUIDATA)% varargin command line arguments to cycle (see VARARGIN)handles.output_cod

18、e = 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_decode=0 0 0 0 0 0 0;handles.intput_decode=0 0 0 0 0 0 0;handles.flag=0;guidata(hObject, handles);% Choose default

19、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 from this function are returned to the command line.function varargout = cycle_OutputFcn(hObjec

20、t, 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 handles and user data (see GUIDATA) % Get default command line output from handles structurevar

21、argout1 = 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 version of MATLAB% handles structure with handles and user data (see GUIDATA)handles.code=extrac

22、t_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); % - Executes on button press in decode.function decode_Callback(hObject, eventdata, handles)% hObject

23、 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.codes);guidata(hObject,handles); handles.decode=cycle_decode(handles.m,handles.input_decode);handles.fla

24、g=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)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (

25、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_Cr

26、eateFcn(hObject, eventdata, handles)% hObject handle to inputcode (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUT

27、ER.if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);end(2) 界面说明及运行结果界面由四部分组成,分别是输入、输出及编译码按钮。其运行的初始界面如下图所示。当进行编码时,其操作过程为:在输入框输入相应的信息码字,如“1101”,并按编码按钮,其输出结果为“1101001”,其运行结果如下图所示:当进行译码时,其操作过程为:在输入框输入相应的信息码字,如“1101001”,并按编码按钮,其输出结果

28、为“1101”,其运行结果如下图所示:当随机错一位时,在输入框输入相应的信息码字,如“0101001”,并按编码按钮,其输出结果为“1101”。其运行结果如下图所示:.当随机错两位时,在输入框输入相应的信息码字,如“0101001”,并按编码按钮,其输出结果为“0001”。其运行结果如下图所示:(3) 运行说明由上述验证可以得到GUI界面的运行方式:先在输入框输入相应的信息码字,然后按“编码”或“译码”按钮。在输出框就会有相应的编译码输出。5、 结论(1) 通过验证,由MATLAB编写的编译码函数可以实现(7,4)循环码的编译码;(2) 通过验证,GUI界面可以有效地引用相应函数实现(7,4)循环码的编译码;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1