卷积码实验报告..docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
卷积码实验报告.

一、实验目的 1.进一步熟悉matlab编程环境。 2.学习卷积码编码基本流程。 二、实验要求: (1)实验前编写源程序、准备测试数据。 (2)在matlab下完成程序的编辑、编译、运行,获得程序结果。如果结果有误,应找出原因,并设法更正之。 三、实验内容 ①主函数 main.m clear;clc; msg = randint(1,20,[0,1]) word = encode_conv213(msg) word(1) =~word(1); %信道中存在污染,人为的模拟传输过word(10) =~word(10); %程中的出错码字 word(15) =~word(15); word1=word msg_1 = decode_conv213(word1) msg-msg_1 ②状态积state_machine.m function [output,nextState] = state_machine(input,current_state) output(1) = mod(current_state(1)+current_state(3),2); output(2) = mod(input+current_state(2)+current_state(1),2); nextState(1) = current_state(2); nextState(2) = current_state(3); nextState(3) = input; ③汉明距离hamming_distance.m function distance = hamming_distance(a,b) temp = a+b; temp = mod(temp,2); distance = sum(temp); ④213编码程序encode_conv213.m function word = encode_conv213(msg) word = zeros(1,length(msg)*2); current = [0 0 0]; for i = 1:length(msg) [out,next] = state_machine(msg(i),current); current = next; word(2*i-1) = out(1); word(2*i) = out(2); End ⑤ 213维比特译码decode_conv213.m function msg = decode_conv213(word) chip = 10; %初始状态选十个信息 for i = 1:2^chip M(i,:) = de2bi(i-1,chip); %把所有可能性按二进制输出 W(i,:) = encode_conv213(M(i,:)); %得到相应的二进制编译后的码字 D(i) = hamming_distance(W(i,:),word(1:chip*2)); %与出错码字对比得到汉明距 end [val,index] = sort(D); %val中存汉明距从小到大排列,index中存对应val数据所在位置 ret_msg = zeros(1,length(word)/2); %开辟译出码字的存放空间 for i = 1:6 %1024种选择6种最小距离,并输出在ret_msg中,最小汉明距存于ret_dis ret_msg(i,1:chip) = M(index(i),:); ret_dis(i) = D(index(i)); end iter = (length(word)-chip*2)/2; %剩余要译出的码字个数 for i=1:iter %迭代过程 for j=1:6 msg_temp1 = [ret_msg(j,1:chip+i-1) 0]; %下一状态出“0” msg_temp2 = [ret_msg(j,1:chip+i-1) 1]; %下一状态出“1” word_temp1 = encode_conv213(msg_temp1); %下一状态为“0”时的编码 word_temp2 = encode_conv213(msg_temp2); %下一状态为“1”时的编码

文档评论(0)

sdgr + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档