- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
卷积码编译码实验报告
厦 门 理 工 学 院
实 验 报 告 书
课程名称: 信息论与编码实验
实验名称: 卷积码编译码
一、实验目的
1、使用MATLAB进行卷积码编/解码器的代码编写、运行、仿真等操作。
2、熟练掌握MATLAB软件、语句。
3、理解卷积码编 解码器的原理、知识。
二、实验环境
MATLAB环境
二、实验要求
(1)实验前编写源程序、准备测试数据。
(2)在 MATLAB环境下完成程序的编辑、编译、运行,获得程序结果。如果结果有误,应找出原因,并设法更正之。
四、实验原理
1 、编码原理
卷积码编码的当前输出v(l)不仅与当前输入消息u(l)相关,还与此去前输入的m个消息u(l-1),…,u(l-m)相关,即v(l)=f(u(l),u(l-1),…,u(l-m)), l=0,1,2…
卷积编码电路中移位寄存器初态可设定为全0,电路为按段工作方式,即对每段k比特输出入,产生一段n比特输出。任意一输入段u(l-h)与输出v(l)的关系都是一个特殊的(n,k)线性分组码的编码关系,即存在kn的二元矩阵G,使得
v(l)=u(l-h)G, h=0,1,2,…,m
因此对于消息段序列u=(u(0),u(1),…,u(m),u(m+1),…),相应的输出端序列为v=(v(0),v(1),…,v(m),v(m+1),…),并满足v(0)=u(0)G
v(1)=u(0)G+u(1)G
v(m)=u(0)G+u(1)G+…+u(m-1)G+u(m)G
v(m+1)=u(1)G+u(2)G…+u(m)G+u(m+1)
卷积编码电路在按段工作方式下只需存储或者记忆m段的消息输入,电路中输入移位寄存器最多只有个有效的寄存器单元,而输出移位寄存器仅起一个并串转换作用。因此称参量m为卷积吗的记忆长度(段)
2、维比特译码原理
它的基本思想是把接收到的矢量,和网格图上诸种可能的路径比较,删去距离大的路径,保留距离小的路径,以距离最小路径作为发码的估值
五、实验内容
在MATLAB环境下卷积码编/解码器的实现。
1、 主函数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
2 、状态积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;
3、 汉明距离hamming_distance.m
function distance = hamming_distance(a,b)
temp = a+b;
temp = mod(temp,2);
distance = sum(temp);
4 、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
5、 213维比特译码decode_conv213.m
function msg = decode_c
文档评论(0)