⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readme.txt

📁 传统的卷积码和Turbo码直到今天仍有广泛的应用
💻 TXT
字号:
1.本文件夹的函数实现ctc的编译码功能,仿真环境是matlab

2.共有10个.m文件
1)main
参数选择,生成随机数,编码,调制,加噪声,解调,译码,统计误码率

2)CtcEncoder
CtcCode=CtcEncoder(data,index)---Ctc总编码器
data是一个码块的信息,index是ctc的种类序号
返回编码结果CtcCode

3)ctcenc---ctc子编码器
[code,FinalState]=ctcenc(data,InitialState)
data:一个码块的信息部分
InitialState:编码器初始状态,第一次为0,第二次要在main里查表得到
返回编码结果code和编码器终止状态FinalState,其中,第一次的FinalState用来确定第二次的InitialState
第二次的编码结果code是需要的编码结果

4)CtcInterleaver
alpha=CtcInterleaver(data)
data是一个码块的信息
返回alpha是信息原始下标交织后的位置

5)trellis
state_map=trellis
返回trellis包括每个状态的下4个状态,前4个状态,以及这8个分支上的输入2比特和输出1比特.
因此state_map一行的长度是4+4+4*3+4*3=32

6)CtcDecoder
CtcDecode=CtcDecoder(CtcCode,niter,index,L1)
CtcCode是解调之后的数据乘以信道置信因子的结果,也就是main里的变量y
niter是迭代总数
index是是ctc的种类序号
L1是用于估计编码器状态的迭代次数
返回CtcDecode,是全部的译码结果

7)logmap
[L_all,start_state]=logmap(rec,state_map,L_a_1row,iter,start_state,L1)
rec是子译码器1或2的输入,是系统码及其校验或者交织码及其校验
state_map是网格图
L_a_1row是边信息
iter:当前第几轮迭代
start_state:估计的编码器状态
L1:用于估计编码器状态的迭代次数

8)dec2bin
d=dec2bin(i,k)
i是十进制数
k是它要被转为几位的二进制数
返回d是二进制表示

9,10)modulation/demodulation

3.运行main.m之后可以得到译码结果CtcDecode以及统计好的BER和PER

4.如果要配合c写的ctc译码程序使用,将main.m运完行y=0.5*L_c*DemoduResult;这一行终止,
将y写入noise.dat,将原始数据写入data.dat.把两个文件移到与码率匹配的ctc,ctc23,ctc34中的一个里即可

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -