计算机网络实验2 抗干扰编码

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验2:CRC编码和海明编码编程实现.

一、实验内容:

1. 了解抗干扰编码原理。

2、掌握海明编码和CRC编码的原理,能熟练计算。

3、编程实现海明编码,包括编码过程和译码过程;要求有数据输入、结果输出界面;编程语言不限,但要求界面友好。

4、编程实现CRC编码,包括编码过程和译码过程;要求有数据输入、生成多项式输入、结果输出界面;编程语言不限,但要求界面友好。

5、CRC和海明编码程序不得使用打包好的执行文件;代码可先准备好也可现场编写;采用现场编译、结果验收,三人一组,展示人员在三人中随机抽一名。

二、思考问题:

1) CRC编码和海明编码的主要区别有哪些?

海明编码可以用来纠错但纠错能力有限,只能纠正一个位的错误,不实用;CRC编码只能用来检错,不能纠错,但CRC的检错能力很强。

2) 海明编码能纠多位错误吗?

不能。

3) CRC编码的检错能力与生成多项式最高幂次数值有关系吗?

有。

三、实验时间:2机时。

四、实验要求

1) 画出海明编码流程图、程序代码、编码和译码过程执行结果说明。

2) 画出CRC编码流程图、程序代码、编码和译码过程执行结果说明。

海明编码:

function pushbutton1_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA) N =get(handles.edit1,'string');

s = get(handles.edit2,'string');

s=str2num(s);

N= num2str(N)-'0';

i=1;

k=1;

a=length(N);

X=[0];

t=2;

while(k<=a)

if(t==2^i)

X=[X,0];

i=i+1;

t=t+1

else

c=N(k);

X=[X,c];

k=k+1;

t=t+1;

end

end

i=1;

k=s;

r=1;

B=[];

while(i<=length(X))

b=dec2bin(i,s);

b = num2str(b)-'0';

B=[B;b];

i=i+1;

end

T=X*B;

i=1;

n=[];

while(i<=s)

n=[mod(T(1,i),2),n];

i=i+1;

end

i=0;

k=1;

t=1;

while(i<=s&&k<=2^s-1)

if(k==2^i)

X(1,k)=n(1,i+1);

k=k+1;

i=i+1;

else

k=k+1;

end

end

X=num2str(X);

set(handles.text7,'string',X);

CRC编码:

function pushbutton2_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

data =get(handles.edit1,'string');

gen = get(handles.edit2,'string');

data=str2num(data);

gen=str2num(gen);

data = num2str(data)-'0';

gen = num2str(gen)-'0';

glen=length(gen);

while gen(1)==0

gen=gen(2:glen);

glen=length(gen);

end

data_back=data;

for m=1:glen-1

data=[data 0];

end

dlen=length(data);

cr=data(1:glen-1);

for p=glen:dlen

cr(glen)=data(p);

if cr(1)

cr=xor(cr(2:glen),gen(2:glen));

else

cr=cr(2:glen);

end

end

cr=[data_back cr];

cr=num2str(cr);

set(handles.TEXT,'string',cr);

相关文档
最新文档