MATLAB初学——对于汉明码编码译码的实现

今天上课,老师让我们用matlab进行汉明码编码译码的实现,之前上通信原理课程的时候老师顺带提过一句,现在已然是记不太清了,所以上网搜索了一下关于汉明码的原理。

 

汉明码(Hamming Code),是在电信领域的一种线性调试码,以发明者理查德·卫斯里·汉明的名字命名。。。。。。

简单来说,汉明码就是一个可以校验和纠错的编码。

首先记住一个公式:2^{k}>n+k, n是你要编码的数组长度,k是验证码字的个数

我们现在以k=4,n=7的实例来说明汉明码的编码原理:

a=[1,0,1,0,1,1,1]

因为n+k=11,我们要编码出来的是一个长度为11的数组,其中四位是校验码

根据k值的不同,我们可以吧原始数组分为k组,将原始数组的下标分别转换为二进制

第一组的分别是末位为1的下标:XXX1

第二组的分别是次末位为1的下标:XX1X

第三组的分别是次位为1的下标:X1XX

第四组的分别是首位为1的下标:1XXX

所以第一组P1的下标分别为:3,5,7,9,11

第二组:3,6,7,10,11

第三组:5,6,7

第四组:9,10,11

每一个校验位的数值是组内每一个元素数值的奇偶数

对于译码:

假设接收到长度为11的数组进行译码,先取出校验码&

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值