文档库 最新最全的文档下载
当前位置:文档库 › 基于MATLAB——汉明码设计与实现

基于MATLAB——汉明码设计与实现

基于MATLAB——汉明码设计与实现
基于MATLAB——汉明码设计与实现

实验报告书------汉明码设计与实现

汉明码编译码器系统

班级: 姓名: 学号:

一.实验原理描述

1.1汉明码编码原理

一般来说,若汉明码长为n ,信息位数为k ,则监督位数r=n-k 。若希望用r 个监督位构造出r 个监督关系式来指示一位错码的n 种可能位置,则要求

21r n -≥或211r

k r -≥++(1)

下面以(7,4)汉明码为例说明原理:

设汉明码(n,k )中k=4,为了纠正一位错码,由式(1)可知,要求监督位数r ≥3。若取r=3,则n=k+r=7。我们用

6543210

a a a a a a a 来表示这7个码元,用

123

s s s 的值表示3个监督关系式中的校正子,则123

s s s 的值与错误码元位置的对应关系

可以规定如表1所列。

表1 校正子和错码位置的关系

则由表1可得监督关系式:

(2)

(3)

⊕(4)

a a a a的值决定于输入信号,因此它们是随机的。

在发送端编码时,信息位6543

监督位2a、1a、0a应根据信息位的取值按监督关系来确定,即监督位应使式(2)~式(4)中1s、2s、3s的值为0(表示编成的码组中应无错码)

(5)

式(5)经过移项运算,接触监督位

(6)

式(5)其等价形式为:

(7)

式(6)还可以简记为

或 (8)

其中

所以有

(9)

式(6)等价于

(10)

其中Q为P的转置,即

T

(11)

Q P

式(10)表示,信息位给定后,用信息位的行矩阵乘矩阵Q就产生出监督位。

我们将Q的左边加上一个k×k阶单位方阵,就构成一个矩阵G

(12)

G称为生成矩阵,因为由它可以产生整个码组,即有

(13)

或者(14)

式(13)即汉明码的编码原理

1.2汉明码纠错原理

当数字信号编码成汉明码形式(本文中即A)后在信道中传输,由于信道中

噪声的干扰,可能由于干扰引入差错,使得接收端收到错码,因此在接收端进行汉明码纠错,以提高通信系统的抗干扰能力及可靠性。

一般来说接收码组与A不一定相同。若设接收码组为一n列的行矩阵B,即

(15)

则发送码组和接收码组之差为

(16)

E就是传输中产生的错码行矩阵

(17)

若e

i =0,表示接收码元无错误,若e

i

=1,则表示该接收码元有错。式(16)

可改写成

(18)

若E=0,即接收码组无错,则B A E A

=+=,将它代人式(8),该是仍成立,即有

(19)

当接收码组有错时,E≠0,将B带入式(8)后,该式不一定成立。在未超过检错能力时,式(19)不成立。假设此时式(19)的右端为S,即

(20)

将代入式(20),可得

由式(8)可知,所以

(21)

此处S 与前面的

123

s s s 有着一一对应关系,则S 能代表错码位置。

因此,纠错原理即,接收端收到码组后按式(20)计算出S,再根据表1判断错码情况,进行差错纠正。

二.实验仪器

1.通信原理综合实验系统一台

2.电脑-MATlab 一台

三.实验目的

1.熟悉掌握汉明码的原理与实现

2.观察了解汉明距离的作用

3.通过已经知道的汉明码监督方程为传输的编码进行纠错也验证

四.实验内容

1.汉明码编码规则

汉明码是1950年由美国贝尔实验室提出来的,是第一个设计用来纠正一位误码的线性分组码,汉明码及其变型已广泛应用于数字通信和数据存储系统中作为差错控制码。

汉明码的原始设计思想来自于前面讨论的奇偶监督码。 通过一个例子来说明如何具体构造这些监督关系式。

设分组码 (n,k)中k = 4。为了纠正一位错码,按汉明不等式可得r ≥3,

若取r =3,则n = k +r =7。我们用

a 6 a 5 a 4 a 3 a 2 a 1 a 0 a 2= a 6 ⊕ a 5 ⊕ a 4 a 1= a 6 ⊕ a 5 ⊕ a 3 a 0= a 6 ⊕ a 4 ⊕ a 3 2.编码的检验与纠错

用S1,S2,S3表示三个监督关系式式中的校正子, 监督方程为:

S1 =a6 ⊕a5 ⊕a4 ⊕a2

S2 =a6 ⊕a5 ⊕a3 ⊕a1

S3 =a6 ⊕a4 ⊕a3 ⊕a0

则S1,S2,S3的值与错码位置的对应关系可以规定如下表:

五.实验要求

1.编写7位汉明码的程序,输出汉明码

function f=hammingencod(a)

G=[1 0 0 0 1 1 1;0 1 0 0 1 1 0;0 0 1 0 1 0 1;0 0 0 1 0 1 1]; a=input('输入信息元序列:');

c=mod(a*G,2);

disp('编码后序列为:');

disp(c);

x=.01:.01:4;

[m,n]=size([a]'*ones(1,100));

y=reshape(([a]'*ones(1,100))',1,m*n);

plot(x,y)

axis([0 4 0 1.5]);

set(gca,'XTick',0:1:4);

set(gca,'YTick',0:0.5:1.5);

title('hanmingencode')

xlabel('value')

ylabel('value')

end

输入信息元序列:1101

编码后序列为:

1 0 0 0 1 1 1

0 1 0 0 1 1 0

0 0 1 0 1 0 1

0 0 0 1 0 1 1

2.任意输入一个7位编码使用程序判断编码是否正确,如果错误,指出错位并

纠正。

function g=hammingdecod(B)

H=[1 1 1 0 1 0 0 ;1 1 0 1 0 1 0;1 0 1 1 0 0 1];

B=input('输入接收序列B=');

S=mod(B*H',2); %计算B的伴随式

if S==0

disp('接收到的码字无错误。');

E=dec2bin(0,7);

end

for i=1:1:7

if S==H(:,i)'

E=dec2bin(2^(7-i),7); %计算R的错误图样

matlab中GUI设计

MATLAB的GUI 程序设计 Chapter 8: Design of MATLAB of GUI program GUI(Graphical User Interfaces):由各种图形对象组成的用户界面,在这种用户界面下,用户的命令和对程序的控制是通过“选择”各种图形对象来实现的。 基本图形对象分为控件对象和用户界面菜单对象,简称控件和菜单。 一. 控件对象及属性(Object and its attributes of controller)) 1. GUI控件对象类型(The mode of controller object) 控件对象是事件响应的图形界面对象。当某一事件发生时,应用程序会做出响应并执行某些预定的功能子程序(Callback). 控件对象及其功能:(表7—1) 2. 控件对象的描述(Description of controller object) MATLAB中的控件大致可分为两种,一种为动作控件,鼠标点击这些控件时会产生相应的响应。一种为静态控件,是一种不产生响应的控件,如文本框等。

每种控件都有一些可以设置的参数,用于表现控件的外形、功能及效果,既属性。属性由两部分组成:属性名和属性值,它们必须是成对出现的。 (1)按钮(Push Buttons):执行某种预定的功能或操作; (2)开关按钮(Toggle Button):产生一个动作并指示一个二进制状态(开或关),当鼠点击它时按钮将下陷,并执行callback(回调函数)中指定的内容,再次点击,按钮复原,并再次执行callback 中的内容; (3)单选框(Radio Button):单个的单选框用来在两种状态之间切换,多个单选框组成一个单选框组时,用户只能在一组状态中选择单一的状态,或称为单选项; (4)复选框(Check Boxes):单个的复选框用来在两种状态之间切换,多个复选框组成一个复选框组时,可使用户在一组状态中作组合式的选择,或称为多选项; (5)文本编辑器(Editable Texts):用来使用键盘输入字符串的值,可以对编辑框中的内容进行编辑、删除和替换等操作; (6)静态文本框(Static Texts):仅仅用于显示单行的说明文字; (7)滚动条(Slider):可输入指定范围的数量值;

Matlab的gui界面设计实例练习

一个不错的Matlab的gui界面设计实例 %非常漂亮的日历, function CalendarTable; % calendar 日历 % Example: % CalendarTable; S=datestr(now); [y,m,d]=datevec(S); % d is day % m is month % y is year DD={'Sun','Mon','Tue','Wed','Thu','Fri','Sat'}; close all figure; for k=1:7; uicontrol(gcf,'style','text',... 'unit','normalized','position',[0.02+k*0.1,0.55,0.08,0.06],... 'BackgroundColor',0.6*[1,1,1],'ForegroundColor','b',... 'String',DD(k),'fontsize',16,'fontname','times new roman'); end h=1; ss='b'; qq=eomday(y,m); for k=1:qq; n=datenum(y,m,k); [da,w] = weekday(n); if k==d; ss='r'; end uicontrol(gcf,'style','push',... 'unit','normalized','position',[0.02+da*0.1,0.55-h*0.08,0.08,0.06],... 'BackgroundColor',0.6*[1,1,1],'ForegroundColor',ss,... 'String',num2str(k)); ss='b'; if da==7; h=h+1;

Matlab界面设计的例子

1、很简单,在界面上放三个单选按钮控制颜色(R、G、B),四个pushbutton (功能分别为绘制正弦、余弦、grid off、退出程序),可作为一个小小的入门。 程序为: %simpleGUI2.m-a simple use of Radiobutton and Pushbutton clear all; FigWin=figure('Position',[100,100,600,300],'Name','Uicontrol:Push Button & RadioButton',... 'NumberTitle','off'); AxesHandle=axes('Position',[0.4,0.15,0.5,0.8],'Box','on'); RadioNum=3; for i=1:RadioNum Radio(i)=0;%initial value=0 end Radio(1)=uicontrol(FigWin,...%父对象FigWin(一figure对象),备注③ 'Style','Radio',... 'Position',[50 255 100 30],... 'String','Draw in Red',... 'CallBack',... ['n=1;'... 'if get(Radio(1),''Value'')==1;'...%要使各radio button之间具有互斥性,要用if...else语句 'set(Radio([1:(n-1),(n+1):RadioNum]),''Value'',0);'...

'else;'...%要加上分号,一种规定?参备注① 'set(Radio(1),''Value'',1);'... 'end;'... 'ColorStr=''r'';'... 'set(FunHandle,''Color'',''red'')']);%曲线颜色根据radio button的选项实时变化,ColorStr是一个全局变量 Radio(2)=uicontrol(FigWin,... 'Style','Radio',... 'Position',[50 215 100 30],... 'String','Draw in Green',... 'CallBack',... ['n=2;'... 'if get(Radio(2),''Value'')==1;'... 'set(Radio([1:(n-1),(n+1):RadioNum]),''Value'',0);'... 'else;'... 'set(Radio(2),''Value'',1);'... 'end;'... 'ColorStr=''g'';'... 'set(FunHandle,''Color'',''green'')']); Radio(3)=uicontrol(FigWin,... 'Style','Radio',... 'Position',[50 175 100 30],...

基于-matlab的可视化界面制作

MATLAB可视化设界面计(上) 一个可发布的应用程序通常都需要具备一个友好的图形界面(比如,我们开课时或给学生上课而使用课件时,我们一般就会用到可视化界面)。这样用户不需要知道应用程序究竟是怎样执行各种命令的, 而只需要了解可见界面组件的使用方法用户也不需要知道命令是如何执行, 只要通过与界面交互就可以使指定行为得以正确执行。MATLAB可视化界面的设计, 一般有两种方法, 一是直接通过编辑M脚本文件产生GUI(这个方法就是我们在前面学习过的如何编写、调用M文件), 二是通过MATLAB图形用户界面开发环境GUIDE(Graphical User Interface Development Environment)来形成相应文件。这里只讲述在GUIDE环境中利用控件实现可视化界面功能, 不探讨直接通过编辑脚本文件实现可视化界面的方法。 MATLAB软件GUIDE为用户提供了一个方便高效的集成环境, 所有GUI支持的用户控件都集成在这个环境中, 并提供界面外观、属性和行为响应方式的设置方法。GUIDE将用户保存设计好的GUI界面保存在一个FIG资源文件中, 同时自动生成包含GUI初始化和组件界面布局控制代码的M文件, 为实现回调函数提供了一个参考框架。 下面以一个具体实例来说明GUIDE的开发使用以下所讲解的关于各控件的使用, 我们以MATLAB7.0版本为调试环境, 如果版本的环境和版本略有不同,但基本思想和方法一致。为了方便大家学习,此处提供二个版本(即文字和视频,文字的即为下面的叙述,视频请点击此处。) 实例要完成的功能如下: 首先运行M文件后,出现一个主画面

Matlab-的可视化界面设计

Matlab 的可视化界面设计 一个可发布的应用程序通常都需要具备一个友好的图形界面,这样用户不需要知道应用程序究竟是怎样执行各种命令的, 而只需要了解可见界面组件的使用方法就可以通过与界面交互使指定行为得以正确执行。 MATLAB可视化界面的设计, 一般有两种方法, 一是直接通过编辑M脚本文件产生GUI, 二是通过MATLAB图形用户界面开发环境GUIDE(Graphical User Interface Development Environment)来形成相应文件。 本文利用MATLAB的GUI程序设计一个简单实用的图像处理程序。该程序应具备图像处理的常用功能,以满足用户的使用。现设计程序有以下基本功能: 1)图像的读取和保存。 2)设计图形用户界面,让用户能够对图像进行缩放、旋转、剪裁,显示和对比变换前后的图像。 3)设计图形用户界面,让用户能够用鼠标选取图像感兴趣区域,显示所选像素点的数据值,以及图像轮廓图,并绘制直方图。 4)实现图像锐化。 5)图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。 6)能对图像加入各种噪声,并通过几种滤波算法实现去噪并显示结果。 一、认识图形用户界面(GUI) 用MATLAB对图像进行处理是当前科技领域的一个重要的课题,它采用的是用一组有序的灰度或彩色数据元素构成图像,数组的每一个元素对应于图像的一个像素值。这样MATLAB就可以利用其强大的矩阵计算功能实现对图像的数字处理。本次设计的系统主要是利用MATLAB所提供的图形用户界面(GUI),实现一个可视的面向对象的操作界面。 1.1设计原则 由于要求不同,设计出来的界面也就千差万别。但是,自从人们开始设计图形界面以来,界面设计的评判标准却没有太大的变化。简单说来,一个好的界面

MATLAB界面设计报告-优秀篇

基于MATLAB的单色光的干涉和衍射实验 GUI 设 计 报 告

目录 一、概述 (3) 二、前期准备 (3) 2.1干涉原理及程序 (3) 2.2衍射原理及程序 (4) 三、设计阶段 (5) 3.1进入模块设计 (5) 3.2实验界面设计 (5) 3.3计算模块设计 (8) 3.4绘图模块设计 (8) 3.5清除模块设计 (8) 3.6提示模块设计 (8) 四、软件使用方法 (9) 五、感想 (15) 六、参考文献 (15)

一、概述 MATLAB是目前世界上最流行的、应用最广泛的工程计算和仿真软件,它将计算、可视化和编程等功能同时集于一个易于开发的环境。MATLAB主要应用于数学计算、系统建模与仿真、数学分析与可视化、科学与工程绘图和用户界面设计等。 其中,用户界面设计中,GUI开发环境是MATLAB7.3为设计图形用户界面提供了一个集成与开发环境,且广泛用于实验模拟软件开发中。 此次我所设计的是一个较简洁、清晰的关于单色光干涉与衍射实验的软件。其能完成特定条件下干涉条纹间距和衍射半角的计算,以及干涉条纹和衍射条纹的绘制。 二、前期准备 2.1干涉原理及程序 干涉原理图 程序如下: ym=5*flag_lambda*flag_D/flag_a/1000000; xs=ym; n=101; ys=linspace(-ym,ym,n); for i=1:n r1=sqrt((ys(i)-(flag_a/1000)/2).^2+(flag_D)^2); r2=sqrt((ys(i)+(flag_a/1000)/2).^2+(flag_D)^2); phi=2*pi*(r2-r1)/(flag_lambda/1000000000);

MATLAB GUI设计过程

基于MATLAB的图象处理软件开发 设计指导: 一、引言 图形用户界面(Graphical User Interfaces,GUI)是提供人机交互的工具和方法。GUI是包含图形对象(如窗口、图标、菜单和文本)的用户界面。以某种方式选择或激活这些对象时,通常会引起动作或者发生变化。MATLAB的GUI 为开发者提供了一个不脱离MATLAB的开发环境,有助于MATLAB程序的GUI集成。 所谓的GUIDE就是图形用户界面开发环境(Graphical User Interface Development Environment),它向用户提供了一系列的创建用户图形界面的工具。这些工具大大简化了GUI设计和生成的过程。GUIDE可以完成的任务有如下两点:1)输出GUI。2)GUI编程。GUIDE实际上是一套MATLAB工具集,它主要由七部分组成:版面设计器、属性编辑器、菜单编辑器、调整工具、对象浏览器、Tab顺序编辑器、M文件编辑器。 二、GUIDE的操作界面及使用方法的介绍 1.启动GUIDE在命令窗口中直接键入guide,启动GUIDE,或者直接点击MATLAB 上的按钮,会出现如图1所示的GUIDE Quick Start对话框。利用GUIDE模板创建GUI,或者打开已经存在的GUI,单击OK按钮,打开版面设计工具,如图2 所示。在通常状况下组件面板并不示出组件的名称,如果需要显示组件名称,则进行下面的操作:从File菜单中选择Preferences选项,勾选Show names in component palette选项即可。

图1GUIDE启动对话框 图2版面设计器 2.GUI文件的介绍GUIDE把GUI设计的内容保存在两个文件中,它们在第一次保存或运行时生成。一个是FIG文件,扩展名为.Fig,它包含对GUI和GUI 组件的完整描述;另外一个是M文件,扩展名为.M,它包含控制GUI的代码和组件的回调事件代码。这两个文件与GUI显示和编程任务相对应。在版面设计器中创建GUI时,内容保存在FIG文件中;对GUI编程时,内容保存在M文件中。

matlab界面设计

MATLAB上的gui操作界面设计 截图保存 课程:MATLAB仿真技术 教师: 学院:电气与电子工程学院 班级: 学号: 姓名:

目录 1.设计概述......................................1页2.设计过程......................................1页3.基本功能......................................3页3.1打开图片......................................3页3.2图片剪切......................................4页3.3图片保存......................................5页3.4退出..........................................6页4.总结体会......................................6页

1.概述 截图是由计算机截取的能显示在屏幕或其他显示设备上的可视图像。通常截图可以由操作系统或专用截图软件截取,也有有外部设备如数字相机拍摄。截图也分静态截图与动态截图,前者截图得到一个位图文件,如BMP、PNG、JPEG。而后者得到一段视频文件。截图的目的通常是为了展示特定状态下的程序界面图标,游戏场景等。本设计利用matlab的gui设计一个简单粗糙的集打开图片,截图,保存截图等基本功能于一体的操作界面。 2.设计过程 首先打开matlab软件,在命令窗口输入guide按回车便可以得到界面如图1 图1 点击窗口中的OK格,生成gui设计界面,如图2 图2

第11章matlab图形用户界面设计_习题答案

第11章 MATLAB图形用户界面设计 习题11 一、选择题 1.控件的BackgroundColor属性和ForegroundColor属性分别代表()。D A.前景色和背景色B.前景色和说明文字的颜色 C.说明文字的颜色和背景色D.背景色和说明文字的颜色 2.用于定义控件被选中后的响应命令的属性是()。C A.String B.Command C.CallBack D.Value 3.定义菜单项时,为了使该菜单项呈灰色,应将其Enable属性设置为()。B A.on B.off C.yes D.no 4.建立快捷菜单的函数是()。A A.uicontextmenu B.UIContext C.uimenu D.ContextMenu 5.用于检查和设置对象属性的图形用户界面设计工具是()。A A.对象属性检查器B.工具栏编辑器 C.对象浏览器D.对象属性窗格 二、填空题 1.图形用户界面由窗口、和等图像元素组成。菜单,对话框 2.在一组按钮中,通常只能有一个被选中,如果选中了其中一个,则原来被选中的就不再处于被选中状态,这种按钮称为。单选按钮 3.控件的Position属性由4个元素构成,前两个元素为控件左下角相对于的横纵坐标值,后两个元素为控件对象的和。图形窗口,宽度,高度4.如果需要取消图形窗口默认的菜单,可以将图形窗口的属性设置为none。MenuBar 5.在MATLAB命令行窗口输入命令,或在MATLAB主窗口中单击“主页”选项卡“文件”组中的“新建”命令按钮,选择命令,打开图形用户界面设计模板窗口。guide,图形用户界面 三、应用题 1.建立控件对象。 (1)建立单选按钮,分别用于将图形窗口移至屏幕的四个角。 (2)建立弹出框,分别选择不同的函数,从而实现相应的函数运算。 (3)建立列表框,分别选择不同的函数,从而实现相应的函数运算。 (4)分别建立编辑框和命令按钮,其中编辑框输入多项式系数,命令按钮求其根。 (5)用滑动条来输入a和b的值,命令按钮求其和。

相关文档