计算机网络实验2 抗干扰编码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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);