好文档 - 专业文书写作范文服务资料分享网站

华中科技大学计算机网络实验(二)报告

天下 分享 时间: 加入收藏 我要投稿 点赞

编码:原码序列从“输入序列”编辑框输入,点击“编码”按钮在“编码序列”编辑框 内输出编码序列,对输入编码要求为二进制输入 译码:编码序列从“输入序列”编辑框输入,点击“译码”按钮在“译码序列”编辑框 内输出译码序列,若译码错误会有响应的报错和纠错,对输入序列有不小于三位和二进 制序列的要求 1.4 核心代码与注释 输入序列框callback %做输入检测,检测是否是“0”“1”输入,否则报错 temp_str=get(handles.input,'String'); num_char=unique(temp_str);%unique函数获得输

入字符串中不同字符的字符串 if length(num_char)==2 %如果字符串长度为2 if num_char(2)=='1' %第二个字符不是“1”说明字符串中有其他字符 else set(handles.input,'String','0000'); errordlg('只能输入1和0','输入错误'); end elseif length(num_char)==1 %如果字符串长度为1,判断“1”还是“0\否则报错 if num_char(1)=='0' elseif num_char(1)=='1' else set(handles.input,'String','0000'); errordlg('只能输入1和0','输入错误'); end else %如果字符串长度不为2,直接报错 set(handles.input,'String','0000'); errordlg('只能输入1和0','输入错误'); End 编码按钮callback(编码核心)

%获取输入字符串 temp_str=get(handles.input,'string'); %获取字符串长度 len_str=length(temp_str); %转存原码字符串长度备用 k=len_str; %初始化需要插入的校验码的位数 r=0; %根据海明编码的2^(r)-1)<(k+r)要求,计算校验码位数 while((2^(r)-1)<(k+r)) r=r+1; end %把字符串数组转成0和1的数组,便于处理 for i=1:1:len_str if temp_str(i)=='1' yuan(i)=1;%原码数组为yuan else yuan(i)=0; end end

%把求得相应位数的校验码,用0插入原码中得到新码 j=0; m=1; for i=1:1:(k+r) if i==2^(j) %如果该位置为2的次方,则插入校验码 xin(i)=0; j=j+1; else xin(i)=yuan(m); m=m+1; end end %进行海明编码 odd=0;%用于计算每位校验码负责校验的位置的和 for j=1:1:r %共有r位校验码,需要计算r次 n=1; %初始化循环变量 i=1; while((n*2^(j-1)+i-1)<=(k+r))%当没有超过数组长度时继续循环

if i>(2^(j-1)) %如果本段的编码已经加完 i=1; %则调转到下一段,也就是隔一个2^(j-1)的段再进行累加 n=n+2; else %累加 odd=odd+xin(n*2^(j-1)+i-1); i=i+1; end end if mod(odd,2)==0 %判断是否为偶数 xin(2^(j-1))=0; %若为偶数,则在对应的校验位插入0 else xin(2^(j-1))=1; %若为奇数,则在对应的校验为插入1 end odd=0; end %编码完毕,把数组转换成字符串用于输出

华中科技大学计算机网络实验(二)报告

编码:原码序列从“输入序列”编辑框输入,点击“编码”按钮在“编码序列”编辑框内输出编码序列,对输入编码要求为二进制输入译码:编码序列从“输入序列”编辑框输入,点击“译码”按钮在“译码序列”编辑框内输出译码序列,若译码错误会有响应的报错和纠错,对输入序列有不小于三位和二进制序列的要求1.4核心代码与注释输入序列框callback%做输入检测,检测是
推荐度:
点击下载文档文档为doc格式
7ot0z92d4x02tjb2ixwe3xy6q955i0014ue
领取福利

微信扫码领取福利

微信扫码分享