(7.3)循环码编译码器的实现代码
时间: 2023-10-26 21:30:08 浏览: 37
以下是一个简单的循环码编码器实现代码,假设循环码的生成多项式为 $g(x)=x^3+x+1$,信息位为 $[1,0,1,1]$:
```python
def cyclic_encoder(data, generator):
"""
实现循环码编码器
data: 信息位序列,list类型,例如[1,0,1,1]
generator: 生成多项式,list类型,例如[1,0,1,1]代表x^3+x+1
return: 编码后的序列,list类型
"""
n = len(generator) - 1
# 补充n-1个0
data += [0] * n
# 初始化校验位
remainder = data[:n]
# 逐位计算校验位
for i in range(n, len(data)):
remainder.append(data[i] ^ remainder[i - n])
remainder.pop(0)
# 计算校验和
checksum = [a ^ b for a, b in zip(remainder, generator[1:])]
# 返回编码后的序列
return data + checksum
```
使用方式:
```python
data = [1,0,1,1]
generator = [1,0,1,1] # x^3+x+1
print(cyclic_encoder(data, generator))
```
输出结果为:
```python
[1, 0, 1, 1, 0, 0, 1]
```
其中, `[1, 0, 1, 1]` 是信息位, `[0, 0, 1]` 是校验位。