校验码中码距与纠错能力的关系

纠错编码的基本原理

1、        基本概念

为了方便对差错编码原理进行叙述下面先介绍一些基本术语。

1、        信息码元——指进行差错编码前送入的原始信息编码。

2、        监督码元——指经过差错编码后在信息码元基础上增加的冗余码元。

3、        码字组——由信息码元和监督码元组成的具有一定长度的编码组合。

4、        码集——不同信息码元经差错编码后形成的多个码字组成的集合。

5、        码重——码字的重量即一个码字中“1”码的个数。通常用W表示。例如码字10011000的码重W3而码字00000000的码重W0。同理10011110011100110111

6、        码距——所谓码元距离就是两个码组中对应码位上码元不同的个数也称汉明距。码距反映的是码组之间的差异程度比如00和01两组码的码距为1011和100的码距为3。11000与10011之间的距离d3。码字10011001和11110101之间的码距为4。

7、        最小码距——码集中所有码字之间码距的最小值即称为最小码距用表示。例如若码集包含的码字有1001000011和11000则各码字两两之间的码距分别如下0mindd或110010和00011之间110010和11000之间100011和11000之间,因此该码集的最小码距为2即。000、001、110三个码组相比较码距有1和2两个值最小码距是码的一个重要参数它是衡量码检错、纠错能力的依据。

8、        分组码分组码一般可用nk表示。其中k是每组二进制信息码元的数目n是编码码组的码元总位数又称为码组长度简称码长。n-kr为每个码组中的监督码元数目。简单地说分组码是对每段k位长的信息组以一定的规则增加r个监督元组成长为n的码字。在二进制情况下共有2k个不同的信息组相应地可得到2k个不同的码字称为许用码组。其余2n-2k个码字未被选用称为禁用码组。7495krn3、编码纠检错能力与最小码距之间的关系

 

码距和纠错能力的关系

数字通信系统中送入信道的信息都是“0”“1”组合的数字信号例如待传送的信息是“晴”和“雨”则只需一位数字编码就可以表示。若用“1”表示“晴”“0”表示“雨”。当“0”“1”形式的信息在信道中传输时将0错成1或将1错成0时由于发生差错后的信息编码状态是发送端可能出现的状态因此接收端无法发现差错。但是如果发送信息送进信道之前在每个编码之后附加一位冗余码变成用两位编码“11“表示”晴““00”表示“雨”则在传输过程中由于干扰造成信息编码中一位码发生差错错成“10”或“01”时,由于“10”或“01”都是发送端不可能出现的编码接收端就能发现差错,但此时并不能判断出差错是第一比特还是第二比特,因此不能自动纠错。若继续增加冗余码位数用“111”表示“晴”“000”表示“雨”当编码在传输中出现1位或2位码差错如错成001或101等编码时接收端都能检测到并能确定只有1位码差错时错误码位的位置此时这种编码方式可以检测1位或2位差错并能纠正单个的误码。这主要是因为冗余码位数增加后发送端使用的码集中码字之间最小码距增大。由于反映了码集中每两个码字之间的差别程度如果越大从一个编码错成另一个编码的可能性越小则其检错、纠错能力也就越强。因此最小码距是衡量差错控制编码纠、检错能力大小的标志。。

  • 11
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Matlab计算码长为1000的极化码的编译码误码率(BLER),可以按照以下步骤进行操作: 步骤1: 构造极化码 首先,使用Matlab的`polar_encoder()`函数生成码长为1000的极化码序列。 例如,使用以下代码生成一个长度为1000的极化码序列: ```matlab N = 1000; % 码长 info_bit = randi([0, 1], 1, N); % 生成随机的信息位序列 % 构造极化码 polar_code = polar_encoder(N, info_bit); ``` 步骤2: 模拟信道传输 接下来,模拟信道传输过程,引入信道的噪声。 例如,使用二进制对称信道(BSC)模拟信道传输: ```matlab p = 0.1; % 比特翻转概率 % 模拟信道传输 received_code = bsc_channel(polar_code, p); % 使用自定义的bsc_channel函数模拟BSC信道 ``` 在这里,`bsc_channel()`函数是一个自定义函数,用于模拟二进制对称信道。可以根据具体的需求和参数进行调整。 步骤3: 解码并计算误码率 最后,使用解码算法对接收到的极化码进行解码,并计算误码率。 例如,使用译码算法(如SC译码)对接收到的极化码进行解码: ```matlab decoded_info_bit = polar_decoder(N, received_code); % 使用自定义的polar_decoder函数进行译码 % 计算误码率 num_errors = sum(info_bit ~= decoded_info_bit); bler = num_errors / N; ``` 在这里,`polar_decoder()`函数是一个自定义函数,用于对极化码进行解码。可以根据具体的需求和解码算法进行调整。 这样,就可以在Matlab计算码长为1000的极化码的编译码误码率了。请注意在模拟信道传输和解码过程,根据具体的需求选择合适的信道模型和解码算法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值